Plsql DB2中带返回游标的指针可以参数化吗?

Plsql DB2中带返回游标的指针可以参数化吗?,plsql,db2,Plsql,Db2,下面是我的代码 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 RE

下面是我的代码

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;
创建或替换程序ds\U grp\U热图\U产品\U测试()
特定ds\U grp\U热图\U产品\U测试
语言SQL
修改SQL数据
动态结果集1
开始
声明c_hm_报告(v_sal整数)
带返回的游标
挑选*
在emp中,您的代码是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
@
——#设置终止符@
创建或替换程序ds\U grp\U热图\U产品\U测试(v\U sal整数)
特定ds\U grp\U热图\U产品\U测试
语言SQL
修改SQL数据
动态结果集1
开始
声明c1游标并返回
挑选*
来自emp,其中工资
Its
DB2
PLSQL
在DB2中都是不同的PLSQL。
PLSQL
Oracle
专有的。您必须在DB2中将问题重命名为
Procedure
,并删除
PLSQL
标记