【问题标题】:Adding two row counts in stored procedure in DB2 with parameters使用参数在 DB2 的存储过程中添加两个行计数
【发布时间】:2014-10-10 12:37:58
【问题描述】:

我正在尝试创建一个存储过程,它使用 select 来获取两个表中的行数,然后打印出结果。

CREATE PROCEDURE TEST(IN tab1 varchar(20), IN tab2 varchar(20), out msg INTEGER)
LANGUAGE SQL
READS SQL DATA
BEGIN


DECLARE r1 CURSOR WITH RETURN FOR
    SELECT COUNT(*) FROM tab1;

DECLARE r2 CURSOR WITH RETURN FOR
    SELECT COUNT(*) FROM tab2;

OPEN r1;

OPEN r2;

---- somehow add the 2 together -----

CALL DBMS_OUTPUT.PUT( 'Zeilen = ' );
CALL DBMS_OUTPUT.PUT_LINE( msg );

END @

我更新了添加游标的整个源代码,因为 select (variable)= 有些东西似乎不像

 SELECT tableOneCount = (SELECT COUNT(*) FROM tab1);

但现在的问题是,在创建过程时,我得到了 tab1 未知的错误,这很明显,因为它是一个变量,我不知道如何添加 2 个游标。

有什么想法吗?

提前致谢。

流浪汉

【问题讨论】:

  • SELECT 不是以您尝试的方式分配变量值的方式,无论如何在 DB2 中都不是。此外,您不能使用变量作为对象名称——谷歌搜索“动态 SQL”。

标签: sql stored-procedures parameters db2 resultset


【解决方案1】:

正如@mustaccio 所说,您应该使用变量

DECLARE QTY INTEGER;
SET QTY = (SELECT COUNT(*) FROM tab1);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-20
    相关资源
    最近更新 更多