db2存储过程动态创建选择查询

时间:2013-09-23 07:56:11

标签: stored-procedures db2

我是IBM db2存储过程的新手,我想要做的是从表中获取列的值并根据这些值构建一个select查询,这是我尝试过的,不知道如何继续

CREATE TYPE currencySymbols AS VARCHAR(20) ARRAY[100]@

CREATE PROCEDURE ins_curr_ano(IN crsymbol VARCHAR(20), IN cost1 integer, IN cost2 integer, IN teirId integer) 
BEGIN
DECLARE currencies currencySymbols;
DECLARE maxCount INTEGER DEAFULT 0;

set currencies = ARRAY[SELECT distinct(CURR_SYMBOL) as currencySymbols FROM CURRENCY_MAPPING];

set maxCount = CARDINALITY(currencies);

for i in 1..maxCount loop
     dbms_output.put_line(i);
end loop;

END@

以下是我得到的错误:

DB21034E该命令作为SQL语句处理,因为它不是 有效的命令行处理器命令。在SQL处理期间,它返回: SQL0104N在“for i in”之后发现了一个意外的令牌“循环” 1..maxCount“。预期的代币可能包括:”(“。行号= 13。 SQLSTATE = 42601

1 个答案:

答案 0 :(得分:1)

代码中的for ... loop语句具有PL / SQL语法,而其他所有语句都具有DB2 SQL PL语法。你不能在同一个例程中混合两者。