当前位置: 代码迷 >> PB >> PB11.5 + SQL Server 2000-2005 升级以后的存储过程有关问题
  详细解决方案

PB11.5 + SQL Server 2000-2005 升级以后的存储过程有关问题

热度:36   发布时间:2016-04-29 08:23:32.0
PB11.5 + SQL Server 2000-2005 升级以后的存储过程问题
程序由PB11.5开发,
数据库系统从SQL Server 2000升级到SQL Server 2005,
连接方式使用SNC,ADO.NET

存储过程调用应该有什么改变吗?

现在用SNC存储过程报错为:
存储过程执行错误,SQLSTATE = 42000
Microsoft SQL Native Client
向存储过程传递常量时不能使用OUTPUT选项。

调用代码如下:

C# code
DECLARE jd_procedure PROCEDURE FOR Jd_fdj_proc_makeno_system   @ls_user_id      = :gs_user_id,    @ReturnCode      = :li_return    output,    @ReturnValue     = :ls_return    output,    @ls_bill_no_get  = :ls_return_no output Using sqlca;EXECUTE jd_procedure;IF sqlca.SQLCode <> 0 THEN    Ls_err=Sqlca.sqlerrtext    of_close_flash()    RoLLBACK Using sqlca;    OF_msg("","存储过程执行错误~r~n"+Ls_err,2,1,1)ELSE        FETCH NEXT jd_procedure Into :li_return,:ls_return,:ls_return_no;    IF li_return  > 0 THEN                RoLLBACK Using sqlca;        of_close_flash()                of_msg("",ls_return,2,1,1)        return;    else        COMMIT Using sqlca;    END IF    CLOSE jd_procedure;//    messagebox("",ls_return_no+'-'+ls_return+'-'+string(li_return))END IF


求解啊。谢谢!

------解决方案--------------------
通过这种方式执行存储过程,[email protected]
例如:
decimal{4} ld_a
string Com = 'xxx',WareHouse = 'WWW'
DECLARE jd_procedure PROCEDURE FOR UP_IM_GetXXXMMMQty
@CompanyID = :Com,
@WareHouseID = :storeHouse,
@XXXMMMQty = :ld_a output
Using sqlca;
[email protected] @WareHouseID @XXXMMMQty 单个参数必须是UP_IM_GetXXXMMMQty中的三个参数的变量名称
看你的存储过程,应该就是错在这儿了
  相关解决方案