通过SqlCommand执行sqlserver的存储过程,无法获得返回的字符串么?
同时返回的int 类型可见, 而且在sql查询分析器中执行该存储过程可以获得返回的字符串。
存储过程如下:
Create procedure dbo.saveStockOut
(
@Code varchar(20),
@Project_NO varchar(20),
@PR_NO varchar(20),
@Quantity int,
@RetMessage varchar(100) output,
@RetValue int output
)
AS
DECLARE @Out_Date datetime
DECLARE @Count int
DECLARE @StockQuantity int
DECLARE @StockReserved int
DECLARE @Reserved_Qty int
BEGIN
select @Count=count(*) from StockOut where Code = @Code and Project_NO=@Project_NO and PR_NO=@PR_NO
if (@Count> 0)
begin
set @RetValue = -1;
set @RetMessage = '数据库中已有该出库单! ';
RETURN
end;
End
SqlCommand cmd = new ……
cmd.Parameters.Add( "@Code ", SqlDbType.Char);
cmd.Parameters.Add( "@Project_NO ", SqlDbType.Char);
cmd.Parameters.Add( "@PR_NO ", SqlDbType.Char);
cmd.Parameters.Add( "@Quantity ", SqlDbType.Int);
cmd.Parameters.Add( "@RetMessage ", SqlDbType.Char).Direction = ParameterDirection.Output;
cmd.Parameters.Add( "@RetValue ", SqlDbType.Int).Direction = ParameterDirection.Output;
_conn.Open();
cmd.CommandType = CommandType.StoredProcedure; // 指示使用存储过程
cmd.ExecuteNonQuery();
if (cmd.Parameters[ "@RetMessage "].Value!=null)
retMsg = (string)cmd.Parameters[ "@RetMessage "].Value;
RetValue = (int)cmd.Parameters[ "@RetValue "].Value;
------解决方案--------------------1。
Command 的参数类型使用错了
> > >
cmd.Parameters.Add( "@Code ", SqlDbType.VarChar, 20);
cmd.Parameters.Add( "@Project_NO ", SqlDbType.VarChar, 20);
cmd.Parameters.Add( "@PR_NO ", SqlDbType.VarChar, 20);
cmd.Parameters.Add