先在数据库中建立一个包,包内包括一个hello world的函数和一个返回结果集的存储过程:
包头:
create or replace package test_net
is
type t_table is ref cursor;
procedure p_serach(mycs out t_table);
function f_count(str in varchar2)
return varchar2;
end;
然后创建包体:
CREATE OR REPLACE package BODY test_net
is
procedure p_serach(mycs out t_table)
is
begin
open mycs for select * from table_test;
end p_serach;
function f_count(str varchar2)
return varchar2
is
str_temp varchar2(100) := 'hello ';
begin
str_temp := str_temp || str;
return str_temp;
end f_count;
end test_net;
这样包就建立成功。下面就是再c#程序中对其进行调用,
调用包内函数:
string oracle_conn = "User ID=user; Password=password; Data Source=server";
using (OracleConnection conn = new OracleConnection(oracle_conn))
{
conn.Open();
OracleCommand com = new OracleCommand("test_net.f_count", conn);//调用包
com.CommandType = CommandType.StoredProcedure;
//输入参数
OracleParameter p_input = new OracleParameter("str", OracleType.VarChar, 10);
p_input.Direction = System.Data.ParameterDirection.Input;
p_input.Value = "function";
//返回参数
OracleParameter p_output = new OracleParameter("result", OracleType.VarChar, 100);
p_output.Direction = System.Data.ParameterDirection.ReturnValue;
com.Parameters.Add(p_input);
com.Parameters.Add(p_output);
com.ExecuteNonQuery();
conn.Close();
Response.Write(p_output.Value.ToString());
}
调用包内过程:
string oracle_conn = "User ID=user; Password=password; Data Source=server";
using (OracleConnection conn = new OracleConnection(oracle_conn))
{
conn.Open();
OracleCommand com = new OracleCommand("test_net.p_serach", conn);
com.CommandType = CommandType.StoredProcedure;
OracleParameter p_input = new OracleParameter("mycs", OracleType.Cursor);
p_input.Direction = System.Data.ParameterDirection.Output;
com.Parameters.Add(p_input);
OracleDataAdapter da = new OracleDataAdapter(com);
DataSet ds = new DataSet();
da.Fill(ds, "test");
conn.Close();
}
本文作者:佚名 来源:本站原创
CIO之家 www.ciozj.com 微信公众号:imciow