【发布时间】:2014-10-15 08:51:16
【问题描述】:
我有这个存储过程:
CREATE or replace PROCEDURE TESTx()
BEGIN
DECLARE tableOneCount INTEGER;
DECLARE tableTwoCount INTEGER;
DECLARE strCmd VARCHAR(500);
SET tableOneCount = (SELECT COUNT(*) FROM proj);
SET tableTwoCount = (SELECT COUNT(*) FROM proj2);
SET msg = tableOneCount + tableTwoCount;
Create table tempa(name varchar(50), counter integer);
Insert into tempa(name, counter) values ('counter1', tableOneCount);
Insert into tempa(name, counter) values ('counter2', tableTwoCount);
Insert into tempa(name, counter) values ('counter_all', msg);
SET strCmd=(SELECT * FROM tempa);
EXECUTE IMMEDIATE(strCmd);
drop table tempa;
END @
它应该只计算 2 个表并添加它们,然后返回一个包含结果的表。由于我还没有想出另一种方法来做到这一点,我创建了一个临时表并将所有内容插入其中,然后只返回一个 select 语句。不知何故,这不起作用,因为 select 语句遇到了错误。
我尝试过使用
declare global temporary table session.tempa
(name varchar(50), counter integer)
on commit preserve rows not logged;
但这给了我错误,即行数和变量数不匹配 (SQL0117N)
知道如何让它工作吗?
【问题讨论】:
标签: sql select stored-procedures db2