SQL的儲存過程例項返回值

2021-04-27 12:55:25 字數 2196 閱讀 3584

一直沒有找到一種好的方法來引用有返回值的儲存過程的方法,使我在新增資料中走了不少的彎路,最近,在查閱了大量的資料之後,終於在微軟的乙個例項中找到了一種良好的方法。

首先編寫好一有返回值的儲存過程

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...