Sql Server 中的output returnvalue的区别

来源:互联网 发布:温故而知新的知 编辑:程序博客网 时间:2024/05/16 00:41

1:ReturnValue只能返回0,1,-1这样的数据,局限性很大 ,而在存储过程中用OutPut参数,可以返回各种类型的数据,比较灵活方便。

ReturnValue   是用来返回错误码的,output是指存储过程传出参数       例如    :

@Flag   varchar(20)   output   
sql存储过程:
create proc Test
@B varchar(50) output,
@C varchar(50)
as
begin
 declare @A int
 set @B=@C+'Return'
 set @A=1000
 return @A
end
c#程序代码:       
 System.Data.SqlClient.SqlConnection conn = new System.Data.SqlClient.SqlConnection("server=(local);uid=sa;pwd=sa;database=ServerUForVhost1");
        System.Data.SqlClient.SqlCommand comm = new System.Data.SqlClient.SqlCommand("Test", conn);
        comm.CommandType = System.Data.CommandType.StoredProcedure;
        //调用sqlhelper时这样写,单独不行:comm.Parameters.Add(不能addsqlparameter[])
        //SqlParameter[] parameter ={
        //    new System.Data.SqlClient.SqlParameter("@A",System.Data.SqlDbType.Int,4),
        //    new System.Data.SqlClient.SqlParameter("@B",System.Data.SqlDbType.VarChar,50),
        //    new System.Data.SqlClient.SqlParameter("@C",System.Data.SqlDbType.VarChar,50)
        //    };
        //parameter[2].Direction = ParameterDirection.Input;
        //      parameter[0].Direction = ParameterDirection.ReturnValue;
        //      parameter[1].Direction = ParameterDirection.Output;
          comm.Parameters.Add(new System.Data.SqlClient.SqlParameter("@A", System.Data.SqlDbType.Int, 4));
          comm.Parameters["@A"].Direction = ParameterDirection.ReturnValue;
          comm.Parameters.Add(new System.Data.SqlClient.SqlParameter("@B", System.Data.SqlDbType.VarChar, 50));
          comm.Parameters["@B"].Direction = ParameterDirection.Output;
          comm.Parameters.Add(new System.Data.SqlClient.SqlParameter("@C", System.Data.SqlDbType.VarChar, 50));
          comm.Parameters["@C"].Value = "insertmsg";
          conn.Open();
          int i = comm.ExecuteNonQuery();
          string result1 = comm.Parameters["@A"].Value.ToString();
          string result2 = comm.Parameters["@B"].Value.ToString();
          conn.Close();
结果为: result1=1000;result2=insertmsgResult
 
原创粉丝点击