DB2中一个存储过程中调用另一个存储过程问题?

ekinguofeng 2006-08-31 05:34:54
存储过程1
CREATE PROCEDURE ALAN_CHAN.PROC1 ()
RESULT SETS 1
LANGUAGE SQL
P1: BEGIN
DECLARE cursor1 CURSOR WITH RETURN TO CALLER FOR
SELECT IMITM
FROM CRPDTA.F4101
WHERE RTRIM(CRPDTA.F4101.IMLITM) = '13591.23383';
open cursor1;
END P1

存储过程2
CREATE PROCEDURE ALAN_CHAN.PROC2 (OUT OUT_STR VARCHAR(100))
LANGUAGE SQL
P1: BEGIN
declare loc1 result_set_locator varying;
--调用该SP返回结果集
call ALAN_CHAN.PROC1;
--将返回结果集和结果集数组关联
associate result set locator(loc1) with procedure ALAN_CHAN.PROC1;
--将结果集数组分配给cursor
allocate cursor1 cursor for result set loc1;
--直接从结果集中赋值
fetch cursor1 INTO OUT_STR;
--关闭游标
close cursor1;
END P1

运行ALAN_CHAN.PROC2后产生错误,返回的SQLCODE为SQL0104,我查找IBM的SQL Message说是语法有错误,请大家帮忙看看
另外我的运行环境是 IBM AS400/DB2 V5R3,IBM Developer Workbench编写存储过程
...全文
659 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
ekinguofeng 2006-09-02
  • 打赏
  • 举报
回复
問題找到了,原來在DB2 UDB For iSeries V5R3中並不支持RESULT_SET_LOCATOR--VARYING,以下是我從IBM資訊中心的結果

DB2 UDB For V8資訊中心--->搜索--->Compound SQL (Procedure) statement--->Syntax

|--DECLARE----SQL-variable-name-+------------------------------->

.-DEFAULT NULL------.
>--+-data-type--+-------------------+-+-------------------------|
| '-DEFAULT--constant-' |
'-RESULT_SET_LOCATOR--VARYING------'

DB2 UDB For iSeries V5R3資訊中心--->搜索--->compound-statement--->Syntax

SQL-variable-declaration:
.-,-----------------.
V |
|--DECLARE----SQL-variable-name-+------------------------------->
.-DEFAULT NULL-------------------------.
>--data-type--+--------------------------------------+----------|
'-DEFAULT--constant--+---------------+-'
| (1) |
'-NOT NULL------'

但,不知道在AS400中有沒有其它的實現方法,知道的兄弟可以在這裡留一筆,先謝了!
tonybest 2006-09-01
  • 打赏
  • 举报
回复
好像希望这个电话对您有所帮助 哈哈 http://blog.csdn.net/johnlya

5,889

社区成员

发帖
与我相关
我的任务
社区描述
IBM DB2 是美国IBM公司开发的一套关系型数据库管理系统,它主要的运行环境为UNIX(包括IBM自家的AIX)、Linux、IBM i(旧称OS/400)、z/OS,以及Windows服务器版本
社区管理员
  • DB2
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧