调用存储过程并且使用返回值的基本方法
时间:2009-05-31 00:08:21
作者:互联网
一直没有找到一种好的方法来引用有返回值的存储过程的方法,使我在添加数据中走了不少的弯路,最近,在查阅了大量的资料之后,终于在微软的一个实例中找到了一种良好的方法。
首先编写好一有返回值的存储过程
create procedure proc_name
@para1 nchar(20), --输入参数
@para2 int = null out --输出参数,供程序使用
as
set nocount on
if ( not exists (select * from employee where em_name=@para1))
begin
insert into employee(name) values(@para1)
select @para2=@@identity --返回添加记录的ID
return 1 --返回是否成功添加数据
end
else
return 0 --返回失败
go
然后是调用存储过程的方法
sqlcommand command;
command = new sqlcommand(proc_name,new sqlconnection(connectionstr));
co***nd.paraments.add("@para1"),"name1"); //输入参数,职员姓名
co***nd.paraments.add(new sqlparament("@para2", //生成一输出参数
Sq***Type.Int; //参数数据类型
Pa***enterDirection.OutPut, //输入输出类型
0,
0,
st***g.Emplty,
Da***owVerstion.Default,
null) //参数值,输入参数时需提供
);
co***nd.commandtype=commandtype.StoredProcedure;
co***nd.connection.open();
co***nd.executenonQuery();
int pkid=(int)co***nd.Parameters["@para2"].value; //得到输出参数的值
co***nd.connection.close();
此处是引用输出参数,如果要引用返回值(是否成功添加数据)则只需把ParamenterDirection的类型改为returnvalue;再自己改一个参数名就可以了.