以下是我的代码
CREATE OR REPLACE PROCEDURE ds_grp_heatmap_product_test ()
SPECIFIC ds_grp_heatmap_product_test
LANGUAGE SQL
MODIFIES SQL DATA
DYNAMIC RESULT SETS 1
BEGIN
DECLARE c_hm_report(v_sal INTEGER)
CURSOR WITH RETURN FOR
select *
from emp where salary<v_sal;
open c_hm_report(2000);
END;
这段代码给出了编译错误,知道我做错了什么。
答案 0 :(得分:1)
您的代码是SQLPL(与PLSQL不同)。根据您的Db2服务器版本和配置,您还可以编写PLSQL(Db2的Oracle兼容模式)。您收到编译错误,因为上述语法对SQLPL无效。
下面的代码可能就是您所寻求的:本例中的参数作为存储过程的输入提供,根据需要调整类型,或者您可以通过其他方式设置变量v_sal:
--#SET TERMINATOR @
CREATE OR REPLACE PROCEDURE ds_grp_heatmap_product_test (in v_sal integer)
SPECIFIC ds_grp_heatmap_product_test
LANGUAGE SQL
MODIFIES SQL DATA
DYNAMIC RESULT SETS 1
BEGIN
DECLARE c1 CURSOR WITH RETURN FOR
select *
from emp where salary < v_sal;
open c1;
END
@