3
有沒有辦法在表中使用列定義來定義存儲區中的變量?例如在Employees表中,有一個名爲LastName的列。在INFORMATION_SCHEMA.COLUMNS中,您可以獲取DATA_TYPE('nvarchar')和CHARACTER_MAXIMUM_LENGTH(50)。我想知道是否可以使用這兩個描述符來在sproc中創建一個變量。我看到有人在Oracle中使用的技術非常相似。他們創造了一個表,並使用的定義來聲明一個變量:基於表中列的定義在存儲區中創建變量
CREATE TABLE TEST_CONSTANTS (
MAX_LEN VARCHAR2(32)
);
DECLARE x TEST_CONSTANTS.MAX_LEN%TYPE;
BEGIN
x := 'Test';
dbms_output.put_line(x);
END;
我希望做一些類似的。這樣,如果表中的列更改,我可能不必更改我的代碼(也寧願不使用varchar(max))。
讓我知道是否需要進一步澄清。
TIA !!
您需要動態SQL來做你想做的事 – Lamak
T-SQL並不是真正的元語言編程。你的全部目的只是爲了聲明一個有趣的類型的變量,還是你有一個實際的問題需要解決? –
其實,剛剛意識到你已經標記了SQL-Server,但你的代碼看起來並不是T-SQL。你錯了嗎?也許你正在瞄準甲骨文? –