日期:2013-09-17  浏览次数:20899 次

大家一起分享C#调用oracle存储过程





执行结果

??????

?

??????

?

?????

?

Oracle方面

1.创建Oracle过程存储

create or replace procedure proce_test(paramin in varchar2,paramout out varchar2,paraminout in out varchar2)
as
? varparam varchar2(28);
begin
? varparam:=paramin;
? paramout:=varparam|| paraminout;?
end;



2.测试过程存储

declare
? param_out varchar2(28);
? param_inout varchar2(28);
begin
? param_inout:='ff';??
? proce_test('dd',param_out,param_inout);??
? dbms_output.put_line(param_out);
end;

?

测试结果:ddff

C#方面

1.创建界面

?

类型
对象名
Text属性值

Button
Button1
调用

Label
Label1
a:

Label
Label2
b:

Label
m_input
input

Label
m_input_output
inputoutput

Label
m_Print
显示:

TextBox
m_TxtI
?

TextBox
m_TxtIO
?


?

2.显示代码

?

(1) 引用oracle的组件

??? 在代码中添加 using System.Data.OracleClient;

(2) 在界面上双击“调用”按钮,编写如下代码:

private void Button1_Click(object sender, System.EventArgs e)

???????? {

????????????? string mConn="data source=ora9i.ora.com;user id= ora;password= ora ";//连接数据库

????????????? conn=new OracleConnection(mConn);

????????????? cmd=conn.CreateCommand();

????????????? cmd.CommandText="proce_test";//存储过程名

????????????? cmd.CommandType=CommandType.StoredProcedure;//声明调用存储过程

????????????? //存储过程的参数,paramin代表参数名,OracleType.VarChar代表参数类型,20代表参数的大小

????????????? OracleParameter param_in=cmd.Parameters.Add("paramin",OracleType.VarChar,20);

????????????? param_in.Direction=ParameterDirection.Input;//代表参数的存储方式

????????????? param_in.Value=m_TxtI.Text;

OracleParameter param_out=cmd.Parameters.Add("paramout",OracleType.VarChar,20);

????????????? param_out.Direction=ParameterDirection.Output;

OracleParameter param_inout=cmd.Parameters.Add("paraminout",OracleType.VarChar,20);

????????????? param_inout.Direction=ParameterDirection.InputOutput;

????????????? param_inout.Value=m_TxtIO.Text;

????????????? conn.Open();

????????????? //执行存储过程

????????????? cmd.ExecuteNonQuery();

????????????? //返回参数的值

????????????? m_Print.Text="显示:"+param_out.Value.ToString();

????????????? conn.Close();

}

?