一直沒有找到一種好的方法來引用有返回值的儲存過程的方法,使我在新增資料中走了不少的彎路,最近,在查閱了大量的資料之後,終於在微軟的乙個例項中找到了一種良好的方法。
首先編寫好一有返回值的儲存過程
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;再自己改乙個引數名就可以了.
declare checkid_cursor cursor for
exec (@execsql)
open checkid_cursor
fetch next from checkid_cursor into @sztypeid, @sonnum, @par,@soncount
while (@@fetch_status = 0)
begin
set @nson=@sonnum
set @ncount=@soncount
declare @tempid varchar(5),@nreturn int
set @soncount=@soncount+1
exec @nreturn=inttostr @soncount,@tempid out
if @nreturn=-1
begin
close checkid_cursor
deallocate checkid_cursor
return -2
end
else
begin
if @sztypeid='00000'
set @createdid=@tempid
else
set @createdid=rtrim(@sztypeid)+@tempid
endfetch next from checkid_cursor into @sztypeid, @sonnum, @par,@soncount
endclose checkid_cursor
deallocate checkid_cursor
return 1
SQL儲存過程返回值
先靠一下自己。當我做多了oracle時,我就忘了sql的儲存過程可以返回資料集這個事實了。create procedure test t1 int,t2 nvarchar 200 out asset t2 這個是輸出引數 go呼叫 declare out t2 nvarchar 200 exec t...
儲存過程返回值
alter procedure dbo.spdelstudentbyid id int,result int output parameter1 int 5,parameter2 datatype output asset nocount on 不返回計數當 set nocount 為 on 時,不...
儲存過程 返回值
返回值 儲存過程的返回值 使用 return 語句指定儲存過程的返回 如果返回值在 1到 99之間,表示沒有成功執行,可以通過判斷返回值來進行相應的處理。可以用return語句將大於0或者小於 99的整數作為自定義返回值,來表示不同的執行結果。典型 declare result int execut...