不能在手动或分布事务方式下创建新的连接

sunfor 2011-10-26 11:36:05
在PB中执行如下SQL,提示:不能在手动或分布事务方式下创建新的连接!

我的语句:
declare cur_1 cursor for
select cus_code,pay_date from customer ;
open cur_1;
fetch cur_1 into :cuscode1,:date_1;
do while sqlca.sqlcode=0
......
tot_total1 = 0
select sum(total) into :tot_total1 from invoice where cus_code=:cuscode1 and date_build>:date_2 and date_build<=:date_3 ;
......
fetch cur_1 into :cuscode1,:date_1;
loop
close cur_1;

得到的tot_total1 为 0,即select sum(total) into :tot_total1 from invoice...这句没执行!
按照这个错误信息查了一下,好像用SELECT时,和Cursor有关。
有人说:是你CURSOR没有关闭,然后又继续SELECT导致的,你可以先把SELECT的结果扔到数组里,关了CURSOR再循环再SELECT。
但我的数据要在CURSOR里再用SELECT得到合计数!不能关了CURSOR再循环再SELECT。
请问如何能执行select sum(total) into :tot_total1 from invoice...得到tot_total1的合计值?
...全文
493 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
中国风 2011-10-26
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 sunfor 的回复:]

引用 6 楼 roy_88 的回复:

引用 4 楼 sunfor 的回复:

没发错,我问的是SQL问题。


MS SQL不是SQL啊

我用的是MS SQL2000
[/Quote]
看你自己的語法,非SQL SERVER

你最好入門先,是什麼腳本你的搞不清
fetch cur_1 into :cuscode1,:date_1;
do while sqlca.sqlcode=0

fetch cur_1 into :cuscode1,:date_1;
loop
close cur_1;
sunfor 2011-10-26
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 roy_88 的回复:]

引用 4 楼 sunfor 的回复:

没发错,我问的是SQL问题。


MS SQL不是SQL啊
[/Quote]
我用的是MS SQL2000
中国风 2011-10-26
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 sunfor 的回复:]

没发错,我问的是SQL问题。
[/Quote]

MS SQL不是SQL啊
sunfor 2011-10-26
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 qianjin036a 的回复:]

你既然用了游标,为什么不直接在游标的循环中把列值直接相加,而要另做一个sum呢?
[/Quote]
我是根据表customer(客户表)里的客户编号及付款日期,来统计该客户在表invoice的合计数!
sunfor 2011-10-26
  • 打赏
  • 举报
回复
没发错,我问的是SQL问题。
--小F-- 2011-10-26
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 roy_88 的回复:]
Oracle啊

樓主發錯版了
[/Quote]
中国风 2011-10-26
  • 打赏
  • 举报
回复
Oracle啊

樓主發錯版了
-晴天 2011-10-26
  • 打赏
  • 举报
回复
你既然用了游标,为什么不直接在游标的循环中把列值直接相加,而要另做一个sum呢?
sunfor 2011-10-26
  • 打赏
  • 举报
回复
呵。。。现在才发现发到ORACLE版,我一开始在MS SQL上发的,还以为发到MS SQL版! SORRY!
中国风 2011-10-26
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 sunfor 的回复:]

引用 8 楼 roy_88 的回复:

看你自己的語法,非SQL SERVER


PB+MS SQL的语法基本一样的,只不过在PB调用SQL语句时,变量名前加:(SQL用 @),语句后加;.
其它的都一样!
[/Quote]
哦,最好不要直接調用語句,改用存儲過程調用,把結果給到PB,你轉到PB版看看吧

在上方 管理菜單—移動—到PB版
sunfor 2011-10-26
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 roy_88 的回复:]

看你自己的語法,非SQL SERVER

[/Quote]
PB+MS SQL的语法基本一样的,只不过在PB调用SQL语句时,变量名前加:(SQL用 @),语句后加;.
其它的都一样!

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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