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;
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;
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 比较好点
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有点错误,少写了点东西,哪位高手有例子?
根据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;
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;
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 比较好点
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有点错误,少写了点东西,哪位高手有例子?
根据PB在线帮助,应该用动态SQL的第3种语法。但严重的是,采用HELP中的语法在执行后退出程序时导致‘非法操作’,即严重的内存使用错误。无论是XP还是W2K,都是这个现象,我用的语法是CLOSE(WINDWOS—NAME)。
能够调用成功是肯定的,我以前做过,但忘了,好象PB的在线HELP有点错误,少写了点东西,哪位高手有例子?
#11
没人知道吗?