越来越接近运行我的第一个存储过程。这一次编译,但是当我 call test.fttest5('YEAR');
运行它,它抛出一个错误这个存储过程有什么问题?
SQL状态:22001 供应商代码:-303 消息:[SQL0303] Host变量* N不兼容。原因。 。 。 。 。 :由于主机变量* N的数据类型与相应列表项的数据类型不兼容,因此无法执行FETCH,SELECT,CALL,SET,VALUES INTO,GET DIAGNOSTICS,GET DESCRIPTOR或SET DESCRIPTOR。
另外如何在我的存储过程中指定无限数据类型?我试过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
;
谢谢,我会研究你说的话,并保持这个线程张贴! – 2010-07-19 19:57:39
想通了,谢谢。你在现场。 – 2010-07-21 11:17:04