大家一起分享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();
}
?
|