呼叫預存程序並且使用傳回值的基本方法
作者:Eve Cole
更新時間: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));
command.paraments.add("@para1"),"name1"); //輸入參數,職員姓名
command.paraments.add(new sqlparament("@para2", //產生一輸出參數
SqlDbType.Int; //參數資料型別
ParamenterDirection.OutPut, //輸入輸出類型
0,
0,
string.Emplty,
DataRowVerstion.Default,
null) //參數值,輸入參數時需提供
);
command.commandtype=commandtype.StoredProcedure;
command.connection.open();
command.executenonQuery();
int pkid=(int)command.Parameters["@para2"].value; //得到輸出參數的值
command.connection.close();
這裡是引用輸出參數,如果要引用回傳值(是否成功新增資料)則只要把ParamenterDirection的型別改為returnvalue;再自己改一個參數名就可以了.