0

我是 IBM db2 存储过程的新手,我想做的是从表中获取列的值并基于这些值构建选择查询,这是我尝试过的,不知道如何继续

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”之后发现了意外的标记“循环”。预期的标记可能包括:“(”。LINE NUMBER=13。SQLSTATE=42601

4

1 回答 1

1

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

于 2013-09-23T16:36:47.740 回答