【发布时间】:2010-07-19 11:46:21
【问题描述】:
真正接近运行我的第一个存储过程。这个编译但是当我运行它时
call test.fttest5('YEAR'); 报错
SQL 状态:22001 供应商代码:-303 消息:[SQL0303] 主变量 *N 不兼容。原因 。 . . . . : 无法执行 FETCH、SELECT、CALL、SET、VALUES INTO、GET DIAGNOSTICS、GET DESCRIPTOR 或 SET DESCRIPTOR,因为宿主变量 *N 的数据类型与相应列表项的数据类型不兼容。
另外,如何在我的存储过程中指定无限的数据类型?我试过DECLARE temp VARCHAR(MAX);,但没有奏效。我的平台是ISeries DB2 V5R4。
create procedure test.fttest5
(IN ftExpression CHARACTER(30))
language sql
reads sql data
dynamic result sets 1
begin
declare cmd VARCHAR(50);
declare whr VARCHAR(50)
;
declare x cursor for sl;
set cmd='select * from testSchema.tempTable' ;
if ftExpression IS NOT NULL
THEN
set whr= ftExpression;
END IF;
set cmd=cmd || CASE WHEN whr IS NULL THEN '' ELSE ' ORDER BY ' || whr END;
prepare sl from cmd;
open x;
return;
end
;
【问题讨论】:
标签: stored-procedures db2 ibm-midrange