您的位置:首页 > 产品设计 > UI/UE

Sql Server 中的output returnvalue的区别

2007-11-30 18:59 489 查看
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: