0
我想在Teradata中創建一個存儲過程,它將接受各種參數。我的查詢有4個SQL傳遞,它創建了3個易失性表。在Select語句中,我需要動態的SQL,這是我遇到問題的地方。插入表Teradata動態存儲過程SQL
這裏是我的SQL:
CREATE PROCEDURE "mydb"."test_sp20" (DepID integer) --DepID is my parameter
DYNAMIC RESULT SETS 1 SQL SECURITY OWNER
BEGIN
DECLARE q1 VARCHAR(10000);
DECLARE cur1 CURSOR WITH RETURN ONLY TO client FOR s1;
CREATE VOLATILE TABLE mydb.tbl_1 , no fallback, no log(
Consumer_Unit_Id INTEGER,
Price_Promotion_Id INTEGER,
Promotion_Id INTEGER)
primary index (Consumer_Unit_Id, Price_Promotion_Id, Promotion_Id) on commit preserve rows ;
INSERT INTO mydb.tbl_1
SELECT * FROM mydb.tbl_1
SET q1 = 'Select * from mydb.tbl_1'
PREPARE s1 FROM q1;
OPEN cur1;
END;
這工作得很好,與靜態SQL一個SP,但我需要的SELECT語句是動態的,在其中我有,我希望能夠廳和部分參數通過交叉。例如
INSERT INTO mydb.tbl_1
SQL = 'Select * from mydb.tbl_1 where Department_ID = ' || DepID ||'
我也試過:
SQL = 'INSERT INTO Select * from mydb.tbl_1 where Department_ID = ' || DepID ||'
在這兩種情況下,我得到以下錯誤:
7683: TEST_SP20:Invalid statement specified inside a dynamic declare cursor/SQL statement
我似乎能夠有一個動態的SQL字符串,但我可以沒有INSERT INTO SELECT字符串?
@dnoeth幫助我開始了這個,所以更多的幫助是非常感謝。
道歉,SQL是不是我的優點:)這實際上工作,所以我認爲我只需創建易失性表,然後用該表中的一般選擇語句將數據拉回。 感謝您的幫助,我真的很感激。 – MidnightDataGeek