C 呼叫Oracle儲存過程的方法

2021-06-04 01:35:24 字數 2627 閱讀 4511

準備:

環境:pl/sql+oracle9i+vs2008

建立表test:

create table test

(id      number,//編號

name    varchar2(10),//姓名

***     varchar2(2),//性別

age     number,//年齡

address varchar2(200)//住址

)1.執行不帶引數的oracle儲存過程:

首先編寫乙個不帶引數的oracle儲存過程:

create or replace procedure proc1

isbegin  insert into test(id,name,***,age) values(1,'liheng','男',25);

commit;//記得寫上這段事務提交語句

end;

c#呼叫**如下:

oracleconnection conn = new oracleconnection("server=cw;uid=ls0019999;pwd=aaaaaa");

conn.open();

oraclecommand cmd = conn.createcommand();

cmd.commandtype = commandtype.storedprocedure;//指明是執行儲存過程

cmd.commandtext = "proc1";

cmd.executenonquery();

conn.close();

2.執行輸入型別引數的儲存過程:

首先編寫乙個輸入型別引數的儲存過程:

create or replace procedure proc2

(v_id number,

v_name varchar2)is

begin

insert into test(id,name) values(v_id,v_name);

commit;

end;

c#呼叫**如下:

//在傳入引數的過程中,我用了兩個文字框來接受使用者輸入的引數,並且做了個簡單的校驗

if (string.isnullorempty(this.textbox1.text))

if (string.isnullorempty(this.textbox2.text))

oracleconnection conn = new oracleconnection("server=cw;uid=ls0019999;pwd=aaaaaa");

conn.open();

oraclecommand cmd = conn.createcommand();

cmd.commandtype = commandtype.storedprocedure;

cmd.commandtext = "proc2";

cmd.parameters.add("v_id", oracletype.number).direction = parameterdirection.input;//指明傳入的引數是輸入給oracle儲存過程用的

cmd.parameters["v_id"].value =this.textbox1.text.trim();

cmd.parameters.add("v_name",oracletype.nvarchar).direction = parameterdirection.input;//指明傳入的引數是輸入給oracle儲存過程用的

cmd.parameters["v_name"].value =this.textbox2.text.trim();

cmd.executenonquery();

conn.close();

3. 執行輸出型別引數的儲存過程:

首先編寫乙個輸出型別的儲存過程:

create or replace procedure proc3

(reccount out number)is

begin

select count(*) into reccount  from test;

end;

這段儲存過程的意思求表中記錄總數

c#呼叫**如下:

oracleconnection conn = new oracleconnection("server=cw;uid=ls0019999;pwd=aaaaaa");

conn.open();

oraclecommand cmd = conn.createcommand();

cmd.commandtype = commandtype.storedprocedure;

cmd.commandtext = "proc3";

cmd.parameters.add("reccount",oracletype.number).direction = parameterdirection.output;

cmd.executenonquery();

//這裡我用了乙個文字框來接受執行儲存過程之後返回的引數值

this.textbox3.text=cmd.parameters["reccount"].value.tostring();

總結:以上**都成功執行,可以照我這個進行擴充套件延伸,道理都是一樣的,結果是不同的。

**:

C 呼叫oracle儲存過程

建立oracle過程儲存 create or replace procedure proce test paramin in varchar2,paramout out varchar2,paraminout in out varchar2 asvarparam varchar2 28 begin ...

c 呼叫oracle儲存過程

create or replace package pkg tabletype is type tabletype is ref cursor procedure sp cpzd cpno in varchar2,status in varchar2,t sql out tabletype end ...

C 呼叫oracle儲存過程

c 呼叫oracle儲存過程 oracle方面 建立oracle過程儲存 create or replace procedure proce test paramin in varchar2,paramout out varchar2,paraminout in out varchar2 asvar...