可以在DB2中使用返回游标进行参数化吗?

时间:2017-10-26 14:56:42

标签: 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 RETURN FOR 
        select *
        from emp where salary<v_sal;
    open c_hm_report(2000);
END;

这段代码给出了编译错误,知道我做错了什么。

1 个答案:

答案 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
@