我有以下查询:
create proc [dbo].[DeleteParts]
@TransNo nvarchar (6), @fpart nvarchar(25)
AS
DECLARE @Returns BIT
SET @Returns = 1
BEGIN
TRY
BEGIN TRANSACTION
DELETE FROM PARTABLE
WHERE TransNo = @TransNo and fpart = @fpart
COMMIT
END TRY
BEGIN CATCH
Print 'Delete failed'
SET @Returns = 0
-- Any Error Occurred during Transaction. Rollback
IF @@TRANCOUNT > 0
ROLLBACK -- Roll back
END CATCH
RETURN @Returns
Run Code Online (Sandbox Code Playgroud)
这个编译完全没问题.
在C#中,我想执行此查询并获取返回值.
我的代码如下:
using(System.Data.SqlClient.SqlCommand deletecommand = this._connection.CreateCommand())
{
deletecommand.CommandText = "DeleteParts";
deletecommand.CommandType = System.Data.CommandType.StoredProcedure;
deletecommand.Parameters.AddWithValue("@TransNo", ItemSODBOM.SONO);
deletecommand.Parameters.AddWithValue("@fpart", ItemSODBOM.fbompart);
string ReturnValue = deletecommand.ExecuteNonQuery().ToString();
}
Run Code Online (Sandbox Code Playgroud)
它没有给我任何错误,但它返回受影响的行数,我想返回1或0.
示例:如果删除操作成功,则返回1,如果失败则返回0.
任何有关源代码的帮助将不胜感激.
谢谢,
普拉迪普
Joe*_*Joe 17
您需要一个Direction设置为的参数ParameterDirection.ReturnValue
就像是:
SqlParameter returnParameter = deleteCommand.Parameters.Add("RetVal", SqlDbType.Int);
returnParameter.Direction = ParameterDirection.ReturnValue;
...
deleteCommand.ExecuteNonQuery();
...
int returnValue = (int) returnParameter.Value;
Run Code Online (Sandbox Code Playgroud)
您存储过程当然需要返回此返回值:
create proc [dbo].[DeleteParts]
@TransNo nvarchar (6),
@fpart nvarchar(25)
AS
DECLARE @Returns BIT
SET @Returns = 1
...
RETURN @Returns
Run Code Online (Sandbox Code Playgroud)