存储过程输出参数的例子
我写了一个插入表的存储过程
CREATE PROCEDURE [AddOppt]
@name varchar(20),@chengwei varchar(10), @company varchar(50),
@tel varchar(20), @addr varchar(100),
@country varchar(50)
AS
insert OpptFeedback
(name,chengwei,company,tel,addr,country) values
(@name,@chengwei,@company,@tel,@addr,@country)
GO
现在想改一下这个存储过程,加一个输出参数@outputOpptid,就是取得当前插入表的新记录的的ID号(自增),之前有告诉我在insert后面跟select scope_identity(),可以取到,
现在的问题是,我不知道这个带输出参数的存储过程如何修改,,?
2,c#里怎样写来取得这个存储过程输出的参数赋值给一个label.Text
谢谢各位了啊,,
------解决方案--------------------1:
CREATE PROCEDURE [AddOppt]
@name varchar(20),@chengwei varchar(10), @company varchar(50),
@tel varchar(20), @addr varchar(100),
@country varchar(50),
@outputOpptid int output
AS
...
set @outputOpptid = scope_identity()
...
2:
定义一个Parameter来取这个输出的值,比如:
Sqlparameter par = new SqlParameter(@outputOpptid, SqlDbType.Int);
par.Direction = ParameterDirection.Output;
...
ExecuteSql
...
object outValue = par.Value;
------解决方案--------------------CREATE PROCEDURE [AddOppt]
@name varchar(20),@chengwei varchar(10), @company varchar(50),
@tel varchar(20), @addr varchar(100),
@country varchar(50)
AS
insert OpptFeedback
(name,chengwei,company,tel,addr,country) values
(@name,@chengwei,@company,@tel,@addr,@country)
/*加这一行*/
return (select @@identity)
GO
取存储过程返回的int值
public override int exeSP(string strSP,string[] strParams,object[] strValues)
{
SqlCommand cmd=new SqlCommand();
cmd.Connection=this.conn ;
cmd.CommandType=CommandType.StoredProcedure;
cmd.CommandText=strSP;
if(inTransaction)
cmd.Transaction=trans;
if((strParams!=null)&&(strParams.Length!=strValues.Length) )
return -1;
SqlParameter param;
param=cmd.Parameters.Add( "@RtnVal ",SqlDbType.Int);
param.Direction=ParameterDirection.ReturnValue;
if(strParams!=null)
{
for(int i=0;i <strParams.Length;i++)
cmd.Parameters.Add(strParams[i],strValues[i]);
}
cmd.ExecuteNonQuery();
param=cmd.Parameters[ "@RtnVal "];
return Int32.Parse(param.Value.ToString());
}
------解决方案--------------------sp后面加:
RETURN scope_identity();
SqlParameter加一个参数@ReturnValue,(名字任意), Direction = ParameterDirection.ReturnValue
sp执行完成后,取值
int id = cmd.Parameters[ "@ReturnValue "].Value;