一直沒有找到一種好的方法來引用有返回值的儲存過程的方法,使我在新增資料中走了不少的彎路,最近,在查閱了大量的資料之後,終於在微軟的乙個例項中找到了一種良好的方法。
首先編寫好一有返回值的儲存過程
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 --返回是否成功新增資料
endelse
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;再自己改乙個引數名就可以了.
sql server 2005返回剛剛插入的資料條目id值
@@identity系統變數
動態sql在儲存過程中的實現
這種情況下,如何轉為儲存過程呢?以上面的兩個動態為例,在儲存過程中實現如下 create or replace procedure my procedure1 tablename in varchar2,studentname in varchar2,my cursor1 out my proced...
C 中SQL呼叫儲存過程
兩種不同的儲存過程呼叫方法 為了突出新方法的優點,首先介紹一下在.net中呼叫儲存過程的 官方 方法。另外,本文的所有示例程式均工作於sqlserver資料庫上,其它情況類似,以後不再一一說明。本文所有例子均採用c 語言。要在應用程式中訪問資料庫,一般性的步驟是 首先宣告乙個資料庫連線sqlconn...
如何取得中的儲存過程的返回值
宣告儲存過程 createproceduresp results demo inparmintint,outparmintoutput asbegin select1,2,3,4 selectuid,id fromsysobjects wheretype u select outparmint 69...