2017-04-11 70 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;