在c 中的取得sql儲存過程的output引數

2021-05-21 23:48:54 字數 1397 閱讀 3918

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

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

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