程序调用存储过程:
int OrderID = 1;
string ReturnDesc = "";
if(bll.ExecuteProc(OrderID, ref ReturnDesc) >= 0)
{
//执行成功
}
else
{
//执行失败,显示错误信息
Response.Write(ReturnDesc);
}
ExecuteProc的DAL 方法:
public int ExecuteOrder(int OrderID , ref string ReturnDesc)
{
SqlParameter[] parameters = {
new SqlParameter("@OrderID ", SqlDbType.Int),
new SqlParameter("@ReturnDesc", SqlDbType.NVarChar, 100, ParameterDirection.Output, false, 0, 0, string.Empty, DataRowVersion.Default, null)};
parameters[0].Value = OrderID ;
parameters[1].Value = ReturnDesc;
int result = DbHelperSQL.RunProcedure("P_proc1", parameters, out result);
ReturnDesc = parameters[1].Value.ToString();
return result;
}
存储过程:
ALTER PROCEDURE [dbo].[P_proc1]
(
@OrderID bigint,
@ReturnDesc varchar(100) OUTPUT
)
AS
BEGIN
begin transaction
set @ReturnDesc = '';
if not exists(select ID from Orders where ID=@OrderID )
begin
set @ReturnDesc = '订单不存在'
rollback transaction
return -1
end
/*
--执行操作,如果出现错误则设置错误代码和结果
update ... set ... where ...
if @@ROWCOUNT = 0
begin
set @ReturnDesc = 'XXXX出现错误'
rollback transaction
return -2
end
*/
COMMIT TRANSACTION
return 0;
END