在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的合计值?

解决方案 »

  1.   

    你既然用了游标,为什么不直接在游标的循环中把列值直接相加,而要另做一个sum呢?
      

  2.   

    我是根据表customer(客户表)里的客户编号及付款日期,来统计该客户在表invoice的合计数!
      

  3.   

    看你自己的語法,非SQL SERVER你最好入門先,是什麼腳本你的搞不清
    fetch cur_1 into :cuscode1,:date_1;
    do while sqlca.sqlcode=0fetch cur_1 into :cuscode1,:date_1;
      loop
    close cur_1;
      

  4.   

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

  5.   

    哦,最好不要直接調用語句,改用存儲過程調用,把結果給到PB,你轉到PB版看看吧在上方 管理菜單—移動—到PB版
      

  6.   

    呵现在才发现发到ORACLE版,我一开始在MS SQL上发的,还以为发到MS SQL版! SORRY!