db2 iseries 7.1中的函数内部的ARRAY声明

时间:2016-06-14 14:55:26

标签: db2 db2-400

我无法在函数内声明一个数组。它显示以下错误。

  

错误:[SQ20441]数组类型在指定的位置无效。

我的代码如下,

document.getElementById('wptv_services_common_widgets_player_silverlight_PlayerObject_0').Pause()

请帮我解决这个问题。我是DB2 i7.1的新手,我无法做到       明白出了什么问题。

1 个答案:

答案 0 :(得分:0)

该sqlcode = -20441的IBM i 7.1文档未列出\包括SQL标量函数为其中可以进行数组类型规范[既不作为参数也不声明变量]。参见:

Listing of SQL messages These tables list SQL messages. Use these tables to find message text, cause text, recovery text, and corresponding SQLCODEs and SQLSTATEs.

  

SQ20441
  消息文本:数组类型在指定的位置无效   原因文本:使用了数组类型,但在指定的上下文中不允许使用。只能使用数组类型:

     

•作为SQL或JAVA程序的参数     •对于在SQL过程中声明的SQL变量     •在SQL过程中的CAST规范中。

     

恢复文本:删除对数组类型的引用。再次尝试请求。
  SQLCODE或SQLCODE:-20441
  SQLSTATE或SQLSTATEs:428H2

除此之外,如果引用是允许的代码:
•EXISTS谓词不允许使用OP中编写的语法;可能需要以下谓词:
if cardinality(AVAILABLE_REV_QTY) >= IN_IPID then
THEN CASE中的语句丢失后需要分号
INITIAL_REV_QTY INTEGER未被引用
DECLARE AVAILABLE_REV_QTY REV_QTY ;DEFAULT NULL所以即使CARDINALITY没有用,除非首先构造数组值;也许作为一个论点传递

注意:例程的工作可以组成一个SQL PROCEDURE,也许可以重写FUNCTION来调用存储过程来执行数组工作 - 不确定,因为OP中没有清楚数据的数据。