在.net中如何把调用存储过程代码写入数据连接层中
在.net中如何把调用存储过程代码写入数据连接层中
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 |
Label3 |
input |
Label |
Label4 |
inputoutput |
Label |
Label5 |
|
TextBox |
TextBox1 |
|
TextBox |
TextBox2 |
|
2.显示代码
(1) 在WebForm4.aspx.cs文件
添加字段 private OraOprater mOra=null; //OraOprater 是数据连接层的类
在界面上双击“调用”按钮,编写如下代码:
private void Button1_Click(object sender, System.EventArgs e)
{
mOra=new OraOprater();
Label5.Text=mOra.SpExeFor(TextBox1.Text,TextBox2.Text); //调用存储过程的方法
}
(2) 在数据连接层中的代码(OraOprater.cs)
引用Oracle组件
using System;
using System.Data;
using System.Data.OracleClient;
namespace WebApplication4
{
public class OraOprater
{
private OracleConnection conn=null;
private OracleCommand cmd=null;
public OraOprater()
{
string mConn="data source=ora9i.ora.com;user id=ora;password=ora"; //连接数据库
conn=new OracleConnection(mConn);
try
{
conn.Open();
cmd=new OracleCommand();
cmd.Connection=conn;
}
catch(Exception e)
{
throw e;
}
}
public string SpExeFor(string m_A,string m_B)
{
//存储过程的参数声明
OracleParameter[] parameters={
new OracleParameter("paramin",OracleType.VarChar,20),
new OracleParameter("paramout",OracleType.VarChar,20),
new OracleParameter("paraminout",OracleType.VarChar,20)
};
parameters[0].Value=m_A;
parameters[2].Value=m_B;
parameters[0].Direction=ParameterDirection.Input;
parameters[1].Direction=ParameterDirection.Output;
parameters[2].Direction=ParameterDirection.InputOutput;
try
{
RunProcedure("proce_test",parameters);
return parameters[1].Value.ToString();
}
catch(Exception e)
{
throw e;
}
}
private void RunProcedure(string storedProcName,OracleParameter[] parameters)
{
cmd.CommandText=storedProcName;//声明存储过程名
cmd.CommandType=CommandType.StoredProcedure;
foreach(OracleParameter parameter in parameters)
{
cmd.Parameters.Add(parameter);
}
cmd.ExecuteNonQuery();//执行存储过程
}
}
}
此代码已运行通过的,谢谢大家光顾