Db2程序错误 [英] Db2 procedure error
问题描述
嗨伙计们,
我几天到了DB2的世界,现在我陷入了一个似乎对我来说很困难的问题。
请加入这个并给我一些帮助。
以下是我写的一个这样的程序,
pad @ disrs16:/ home / pads / temp> db2 -td @ -vf proc2.db2
CREATE PROCEDURE new_procedure1()
LANGUAGE SQL
BEGIN
DECLARE va_datbi VARCHAR(8);
DECLARE va_datab VARCHAR(8);
DECLARE vh_datbi VARCHAR(8);
DECLARE vh_datab VARCHAR(8);
DECLARE new_cursor游标用于
SELECT A.datbi Adatbi,A.datab Adatab,H.datbi Hdatbi ,H.datab
Hdatab
来自SAPR3.A957 A
,SAPR3.KONH H
WHERE
(A.DATBI<> H.DATBI
OR A.DATAB<> H.DATAB)
AND A.MANDT = H.MANDT
AND A.KNUMH = H.KNUMH
AND A.MANDT =''03 0''
更新Hdatbi,Hdatab;
打开new_cursor;
循环
FETCH new_cursor INTO va_datbi,va_datab,vh_datbi,vh_datab;
UPDATE SAPR3.KONH H
SET H.datbi = va_datbi,
H.datab = va_datab
其中CURRENT OF new_cursor
和H.knumh介于''0000000000''和'0090000000''
和H.kotabnr =''030'';
结束循环;
CLOSE new_cursor;
commit;
end
当我尝试执行它时,我收到以下错误。但我无法
纠正这个,今晚是我提交给
制作,可以任意请帮我解决这个问题。我的邮件ID是
bi ** ****@in.ibm.com
DB21034E该命令作为SQL语句处理,因为它是
而不是
有效的命令行处理器命令。在SQL处理过程中它返回了
:
SQL0104N一个意外的令牌UPDATE SAPR3.KONH H SET H.datbi = va_"
被发现
跟随h_datbi,vh_datab; " ;.预期的代币可能包括:
"< psm_return>"。 LINE NUMBER = 27。 SQLSTATE = 42601
pad @ disrs16:/ home / pads / temp>
非常感谢......
< bi ********** @ hotmail.com>在消息中写道
news:11 ********************** @ g43g2000cwa.googlegr oups.com ...嗨伙计们,
我几天到了DB2的世界,现在我陷入了一个似乎对我来说变得困难的问题。
请等一下进入这个并给我一些帮助。
以下是我写过的一个这样的程序,
pad @ disrs16:/ home / pads / temp> db2 -td @ - vf proc2.db2
CREATE PROCEDURE new_procedure1()
LANGUAGE SQL
BEGIN
DECLARE va_datbi VARCHAR(8);
DECLARE va_datab VARCHAR(8);
DECLARE vh_datbi VARCHAR(8);
DECLARE vh_datab VARCHAR(8);
DECLARE new_cursor游标
SELECT A.datbi Adatbi,A.datab Adatab,H.datbi Hdatbi,H.datab
Hdatab
来自SAPR3.A957 A
,SAPR3.KONH H
WHERE
(A.DATBI<> H.DATBI
OR A.DATAB <> H.DATAB)
AND A.MANDT = H.MANDT
AND A.KNUMH = H.KNUMH
AND A.MANDT =''030''
更新Hdatbi,Hdatab;
打开new_cursor;
循环
FETCH new_cursor INTO va_datbi,va_datab,vh_datbi,vh_datab;
更新SAPR3.KONH H
SET H.datbi = va_datbi,> H.datab = va_datab
其中CURRENT OF new_cursor
和H.knumh介于''0000000000''和'0090000000''
和H.kotabnr =''030''; <结束循环;
关闭new_cursor;
提交;
结束
当我尝试执行它时,我收到以下错误。但我无法<纠正这个,今晚是我将其提交到
制作的最后期限,可以随便帮我解决这个问题。我的邮件ID是
bi ****** @ in.ibm.com
DB21034E该命令作为SQL语句处理,因为它是
不是
有效的命令行处理器命令。在SQL处理过程中它返回:
SQL0104N发现了一个意外的令牌UPDATE SAPR3.KONH H SET H.datbi = va_
跟随h_datbi,vh_datab; " ;.预期的代币可能包括:
"< psm_return>"。 LINE NUMBER = 27。 SQLSTATE = 42601
pad @ disrs16:/ home / pads / temp>
非常感谢......
当光标在获取时命中EOF(+100)时会发生什么?此时光标没有
当前值。我不知道这是否与您收到的-104错误直接相关,但这似乎是一个问题。
嗨Mark,
感谢您的回复,
我已经包含了
直到sqlcode = 100,如下所示:
CREATE PROCEDURE new_procedure1()
LANGUAGE SQL
BEGIN
DECLARE va_datbi VARCHAR(8) ;
DECLARE va_datab VARCHAR(8);
DECLARE vh_datbi VARCHAR(8);
DECLARE vh_datab VARCHAR(8);
DECLARE new_cursor游标
SELECT A.datbi Adatbi,A.datab Adatab,H.datbi Hdatbi,H.datab
Hdatab
来自SAPR3.A957 A
,SAPR3.KONH H
WHERE
(A.DATBI<> H.DATBI
或A.DATAB<> H.DATAB)
AND A.MANDT = H.MANDT
AND A.KNUMH = H.KNUMH
AND A.MANDT =''030''
更新Hdatbi,Hdatab;
OPEN new_cursor;
DO UNTIL SQLCODE = 100;
FETCH new_cursor INTO va_datbi,va_datab,vh_datbi,vh_datab;
UPDATE SAPR3 .KONH H
SET H.datbi = va_datbi,
H.datab = va_datab
其中CURRENT OF new_cursor
和H.knumh在''0000000000''和'0090000000之间''
和H.kotabnr =''030'';
end do;
CLOSE new_cursor;
commit;
end
但我又收到了这个错误.... 。我很遗憾.....请指导
me ...
DB21034E该命令作为SQL语句处理,因为它是
不是
有效的命令行处理器命令。在SQL处理期间它返回
:
SQL0104N意外的令牌DO发现在 OPEN
new_cursor; 。
预期的代币可能包括:"< psm_repeat>"。 LINE NUMBER = 21。
SQLSTATE = 42601
最好的问候
Bikash
<双********** @ hotmail.com>在消息中写道
news:11 ******************** @ f14g2000cwb.googlegrou ps.com ...嗨Mark,
感谢您的回复,
我已经包含了
直到sqlcode = 100,如下所示:
CREATE PROCEDURE new_procedure1 ()
LANGUAGE SQL
BEGIN
DECLARE va_datbi VARCHAR(8);
DECLARE va_datab VARCHAR(8);
DECLARE vh_datbi VARCHAR(8);
DECLARE vh_datab VARCHAR(8);
DECLARE new_cursor游标
SELECT A.datbi Adatbi,A.datab Adatab,H.datbi Hdatbi,H.datab
Hdatab
来自SAPR3。 A957 A
,SAPR3.KONH H
(A.DATBI<> H.DATBI
OR A.DATAB<> H.DATAB)> AND A.MANDT = H.MANDT
AND A.KNUMH = H.KNUMH
AND A.MANDT =''030''
更新Hdatbi,Hdatab;
OPEN new_cursor;
DO UNTIL SQLCODE = 100;
FETCH new_cursor I NTO va_datbi,va_datab,vh_datbi,vh_datab;
更新SAPR3.KONH H
SET H.datbi = va_datbi,
H.datab = va_datab
其中CURRENT OF new_cursor
和H.knumh之间的''0000000000''和'0090000000''
和H.kotabnr =''030'';
结束了;
关闭new_cursor;
提交;
结束
但我又收到了这个错误.....我在亏本.....请指导
我...
DB21034E该命令作为SQL语句处理,因为它不是
有效的命令行处理器命令。在SQL处理期间它返回:
SQL0104N意外的令牌DO发现在 OPEN
new_cursor; 。
预期的令牌可能包括:"< psm_repeat>"。 LINE NUMBER = 21。
SQLSTATE = 42601
最好的问候
Bikash
do until条件不会被检查(并且不会终止
循环)直到循环中的最后一个语句。你需要一些基本的编程
课程。
如果使用SQL条件处理程序也会更好。
>
Hi Folks ,
I am few days old to the world of DB2 and right now i am stuck into a
problem that seems to be getting difficult for me.
Please have alook into this and provide me some help.
Below is one such procedure that i have written ,
pads@disrs16:/home/pads/temp>db2 -td@ -vf proc2.db2
CREATE PROCEDURE new_procedure1 ()
LANGUAGE SQL
BEGIN
DECLARE va_datbi VARCHAR(8);
DECLARE va_datab VARCHAR(8);
DECLARE vh_datbi VARCHAR(8);
DECLARE vh_datab VARCHAR(8);
DECLARE new_cursor cursor for
SELECT A.datbi Adatbi , A.datab Adatab , H.datbi Hdatbi, H.datab
Hdatab
FROM SAPR3.A957 A
,SAPR3.KONH H
WHERE
(A.DATBI <> H.DATBI
OR A.DATAB <> H.DATAB )
AND A.MANDT = H.MANDT
AND A.KNUMH = H.KNUMH
AND A.MANDT = ''030''
for update of Hdatbi,Hdatab ;
open new_cursor;
loop
FETCH new_cursor INTO va_datbi , va_datab , vh_datbi , vh_datab;
UPDATE SAPR3.KONH H
SET H.datbi=va_datbi,
H.datab=va_datab
where CURRENT OF new_cursor
and H.knumh between ''0000000000'' and ''0090000000''
and H.kotabnr=''030'' ;
end loop ;
CLOSE new_cursor;
commit;
end
When I try and execute it I get the following error .but i am unable to
rectify this , tonight is the deadline for me to submit it into
production, can anyonle please help me out with this.my mail id is
bi******@in.ibm.com
DB21034E The command was processed as an SQL statement because it was
not a
valid Command Line Processor command. During SQL processing it
returned:
SQL0104N An unexpected token "UPDATE SAPR3.KONH H SET H.datbi=va_"
was found
following "h_datbi , vh_datab; ". Expected tokens may include:
"<psm_return>". LINE NUMBER=27. SQLSTATE=42601
pads@disrs16:/home/pads/temp>
thanks a lot......
<bi**********@hotmail.com> wrote in message
news:11**********************@g43g2000cwa.googlegr oups.com...Hi Folks ,
I am few days old to the world of DB2 and right now i am stuck into a
problem that seems to be getting difficult for me.
Please have alook into this and provide me some help.
Below is one such procedure that i have written ,
pads@disrs16:/home/pads/temp>db2 -td@ -vf proc2.db2
CREATE PROCEDURE new_procedure1 ()
LANGUAGE SQL
BEGIN
DECLARE va_datbi VARCHAR(8);
DECLARE va_datab VARCHAR(8);
DECLARE vh_datbi VARCHAR(8);
DECLARE vh_datab VARCHAR(8);
DECLARE new_cursor cursor for
SELECT A.datbi Adatbi , A.datab Adatab , H.datbi Hdatbi, H.datab
Hdatab
FROM SAPR3.A957 A
,SAPR3.KONH H
WHERE
(A.DATBI <> H.DATBI
OR A.DATAB <> H.DATAB )
AND A.MANDT = H.MANDT
AND A.KNUMH = H.KNUMH
AND A.MANDT = ''030''
for update of Hdatbi,Hdatab ;
open new_cursor;
loop
FETCH new_cursor INTO va_datbi , va_datab , vh_datbi , vh_datab;
UPDATE SAPR3.KONH H
SET H.datbi=va_datbi,
H.datab=va_datab
where CURRENT OF new_cursor
and H.knumh between ''0000000000'' and ''0090000000''
and H.kotabnr=''030'' ;
end loop ;
CLOSE new_cursor;
commit;
end
When I try and execute it I get the following error .but i am unable to
rectify this , tonight is the deadline for me to submit it into
production, can anyonle please help me out with this.my mail id is
bi******@in.ibm.com
DB21034E The command was processed as an SQL statement because it was
not a
valid Command Line Processor command. During SQL processing it
returned:
SQL0104N An unexpected token "UPDATE SAPR3.KONH H SET H.datbi=va_"
was found
following "h_datbi , vh_datab; ". Expected tokens may include:
"<psm_return>". LINE NUMBER=27. SQLSTATE=42601
pads@disrs16:/home/pads/temp>
thanks a lot......
What happens when your cursor hits EOF (+100) on the fetch? There is no
current of cursor at that point. I don''t know if that is directly related to
the -104 error you are receiving, but it appears to be a problem.
Hi Mark,
Thanks afor ur response ,
I have included the
Do until sqlcode=100 as shown below :
CREATE PROCEDURE new_procedure1 ()
LANGUAGE SQL
BEGIN
DECLARE va_datbi VARCHAR(8);
DECLARE va_datab VARCHAR(8);
DECLARE vh_datbi VARCHAR(8);
DECLARE vh_datab VARCHAR(8);
DECLARE new_cursor cursor for
SELECT A.datbi Adatbi , A.datab Adatab , H.datbi Hdatbi, H.datab
Hdatab
FROM SAPR3.A957 A
,SAPR3.KONH H
WHERE
(A.DATBI <> H.DATBI
OR A.DATAB <> H.DATAB )
AND A.MANDT = H.MANDT
AND A.KNUMH = H.KNUMH
AND A.MANDT = ''030''
for update of Hdatbi,Hdatab ;
OPEN new_cursor;
DO UNTIL SQLCODE = 100;
FETCH new_cursor INTO va_datbi , va_datab , vh_datbi , vh_datab;
UPDATE SAPR3.KONH H
SET H.datbi=va_datbi,
H.datab=va_datab
where CURRENT OF new_cursor
and H.knumh between ''0000000000'' and ''0090000000''
and H.kotabnr=''030'' ;
end do;
CLOSE new_cursor;
commit;
end
But again i have received this error .....i am at loss.....please guide
me...
DB21034E The command was processed as an SQL statement because it was
not a
valid Command Line Processor command. During SQL processing it
returned:
SQL0104N An unexpected token "DO" was found following " OPEN
new_cursor; ".
Expected tokens may include: "<psm_repeat>". LINE NUMBER=21.
SQLSTATE=42601
Best Regards
Bikash
<bi**********@hotmail.com> wrote in message
news:11********************@f14g2000cwb.googlegrou ps.com...Hi Mark,
Thanks afor ur response ,
I have included the
Do until sqlcode=100 as shown below :
CREATE PROCEDURE new_procedure1 ()
LANGUAGE SQL
BEGIN
DECLARE va_datbi VARCHAR(8);
DECLARE va_datab VARCHAR(8);
DECLARE vh_datbi VARCHAR(8);
DECLARE vh_datab VARCHAR(8);
DECLARE new_cursor cursor for
SELECT A.datbi Adatbi , A.datab Adatab , H.datbi Hdatbi, H.datab
Hdatab
FROM SAPR3.A957 A
,SAPR3.KONH H
WHERE
(A.DATBI <> H.DATBI
OR A.DATAB <> H.DATAB )
AND A.MANDT = H.MANDT
AND A.KNUMH = H.KNUMH
AND A.MANDT = ''030''
for update of Hdatbi,Hdatab ;
OPEN new_cursor;
DO UNTIL SQLCODE = 100;
FETCH new_cursor INTO va_datbi , va_datab , vh_datbi , vh_datab;
UPDATE SAPR3.KONH H
SET H.datbi=va_datbi,
H.datab=va_datab
where CURRENT OF new_cursor
and H.knumh between ''0000000000'' and ''0090000000''
and H.kotabnr=''030'' ;
end do;
CLOSE new_cursor;
commit;
end
But again i have received this error .....i am at loss.....please guide
me...
DB21034E The command was processed as an SQL statement because it was
not a
valid Command Line Processor command. During SQL processing it
returned:
SQL0104N An unexpected token "DO" was found following " OPEN
new_cursor; ".
Expected tokens may include: "<psm_repeat>". LINE NUMBER=21.
SQLSTATE=42601
Best Regards
Bikash
The "do until" condition will not be checked (and will not terminate the
loop) until the last statement in the loop. You need some basic programming
lessons.
It would also be better if you used SQL condition handlers.
这篇关于Db2程序错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!