关于PB9中调用存储过程的垃圾问题

时间:2020-12-05 16:23:56
在PB9的程序中调用一个含2个输入参数和一个返回参数的存储过程,这个程序应该怎么写?

11 个解决方案

#1


帮顶!

#2


没 人知道吗?就是在PB程序中如何调用存储过程啊,在线等待

#3


我有个模板,但不是输出参数的,是用fetch取结果的
declare 程序中procedure名称 procedure for procedure名称 @参数1=:参数1的值,

@参数2=:参数2的值;

       

execute 程序中procedure名称;  

 

fetch  程序中procedure名称 into :ls_ishaverecipe;

 

if sqlca.sqlcode = -1 then

       ls_remark = sqlca.SqlErrText

       ai_error = -1 

       rollback;

       close 程序中procedure名称;  

       gnv_app.of_log("提示","出错!原因:"+ls_remark)

   
end if      

close 程序中procedure名称

commit;  
 


#4


已经在SQL SERVER中定义了存储过程,含输入参数参数或不含输入参数,有输出或无输出,输出时输出参数为1个,在PB编程中如何调用呢?在线等待

#5


//定义变量   
                  int li_acc_year ,li_acc_qty   //两个输入参数
                  string gs_companyid      //一个返回参数
                 //定义存储过程对象
DECLARE sp_duration PROCEDURE FOR dsp_issue_sum
@li_year = :li_acc_year, @li_acc_qty = :li_acc_qty,
@ls_code = :gs_companyid output;

          //执行存储过程对象
EXECUTE sp_duration;

#6


其中“dsp_issue_sum”为SQL SERVER所创建的存储过程的名称

#7


tanks

#8


不对。

#9


PB_fan(雨后彩虹) 应该是对得。

DECLARE sp_duration PROCEDURE FOR dsp_issue_sum
@li_year = :li_acc_year,@li_acc_qty = :li_acc_qty,
@ls_code = :gs_companyid output;

          //执行存储过程对象
EXECUTE sp_duration;


但是,如果你得不到结果,请在执行得前面加上。

sqlcode.autocommit = true  比较好点

#10


不对。上述语法在PB中是非法的。PB SCRIP中能这样写?
根据PB在线帮助,应该用动态SQL的第3种语法。但严重的是,采用HELP中的语法在执行后退出程序时导致‘非法操作’,即严重的内存使用错误。无论是XP还是W2K,都是这个现象,我用的语法是CLOSE(WINDWOS—NAME)。
能够调用成功是肯定的,我以前做过,但忘了,好象PB的在线HELP有点错误,少写了点东西,哪位高手有例子?

#11


没人知道吗?

#1


帮顶!

#2


没 人知道吗?就是在PB程序中如何调用存储过程啊,在线等待

#3


我有个模板,但不是输出参数的,是用fetch取结果的
declare 程序中procedure名称 procedure for procedure名称 @参数1=:参数1的值,

@参数2=:参数2的值;

       

execute 程序中procedure名称;  

 

fetch  程序中procedure名称 into :ls_ishaverecipe;

 

if sqlca.sqlcode = -1 then

       ls_remark = sqlca.SqlErrText

       ai_error = -1 

       rollback;

       close 程序中procedure名称;  

       gnv_app.of_log("提示","出错!原因:"+ls_remark)

   
end if      

close 程序中procedure名称

commit;  
 


#4


已经在SQL SERVER中定义了存储过程,含输入参数参数或不含输入参数,有输出或无输出,输出时输出参数为1个,在PB编程中如何调用呢?在线等待

#5


//定义变量   
                  int li_acc_year ,li_acc_qty   //两个输入参数
                  string gs_companyid      //一个返回参数
                 //定义存储过程对象
DECLARE sp_duration PROCEDURE FOR dsp_issue_sum
@li_year = :li_acc_year, @li_acc_qty = :li_acc_qty,
@ls_code = :gs_companyid output;

          //执行存储过程对象
EXECUTE sp_duration;

#6


其中“dsp_issue_sum”为SQL SERVER所创建的存储过程的名称

#7


tanks

#8


不对。

#9


PB_fan(雨后彩虹) 应该是对得。

DECLARE sp_duration PROCEDURE FOR dsp_issue_sum
@li_year = :li_acc_year,@li_acc_qty = :li_acc_qty,
@ls_code = :gs_companyid output;

          //执行存储过程对象
EXECUTE sp_duration;


但是,如果你得不到结果,请在执行得前面加上。

sqlcode.autocommit = true  比较好点

#10


不对。上述语法在PB中是非法的。PB SCRIP中能这样写?
根据PB在线帮助,应该用动态SQL的第3种语法。但严重的是,采用HELP中的语法在执行后退出程序时导致‘非法操作’,即严重的内存使用错误。无论是XP还是W2K,都是这个现象,我用的语法是CLOSE(WINDWOS—NAME)。
能够调用成功是肯定的,我以前做过,但忘了,好象PB的在线HELP有点错误,少写了点东西,哪位高手有例子?

#11


没人知道吗?