在.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();//执行存储过程

}

}

}

此代码已运行通过的,谢谢大家光顾

Published At
Categories with Web编程
Tagged with
comments powered by Disqus