程序由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中的三个参数的变量名称
看你的存储过程,应该就是错在这儿了