【问题标题】:db2 stored procedure to create a select query dynamicallydb2 存储过程动态创建选择查询
【发布时间】:2013-09-23 07:56:11
【问题描述】:

我是 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

【问题讨论】:

    标签: stored-procedures db2


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-08
      • 2011-03-06
      • 1970-01-01
      • 2015-08-04
      • 1970-01-01
      • 2016-05-12
      • 2014-11-21
      • 1970-01-01
      相关资源
      最近更新 更多