2017-04-11 71 views
0

這很容易使用T-SQL(SQL Server)的做到這一點:輸出一個SELECT對IBM DB2執行的結果

DECLARE @MyStatement AS NVARCHAR(max) = 'SELECT * FROM MYTABLE' 
EXEC (@MyStatement) 

不過,我已經花IBM DB2小時不能夠做到的相同。我希望這會工作:

DECLARE myStatement VARCHAR(1000); 
SET myStatement = 'SELECT * FROM MYTABLE'; 
PREPARE s1 FROM myStatement; 
EXECUTE s1; 

,但我得到了以下錯誤消息:

Elément syntaxique VARCHAR n'est pas correct. Eléments possibles : DYNAMIC SENSITIVE ASENSITIVE INSENSITIVE.. SQLCODE=-104, SQLSTATE=42601, DRIVER=4.18.60

,我會翻譯成:

Syntax element VARCHAR is incorrect. Possible elements: DYNAMIC SENSITIVE ASENSITIVE INSENSITIVE.. SQLCODE=-104, SQLSTATE=42601, DRIVER=4.18.60

+1

什麼客戶端您使用的連接和DISPLA Ÿ數據? – xQbert

+1

將x聲明爲char(1000);設置x ='select * from mytable';立即執行x; – danny117

+0

你正在尋找[複合SQL語句(https://www.ibm.com/support/knowledgecenter/en/ssw_ibm_i_71/db2/rbafzcompounddynstmt.htm) – mustaccio

回答

0

嘗試喜歡它:

BEGIN 
    DECLARE myStatement VARCHAR(1000); 
    SET myStatement = 'SELECT * FROM MYTABLE'; 
    EXECUTE IMMEDIATE myStatement ; 
END;