c# 调用带有参数的存储过程方法--oracle【转载】

1     由于交叉表的八个报表写在sql中了,每个报表对应sql语句有300行之多,不能定义视图,因为必须传递个参数,所以利用了存储过程实现。

首先,定义包,然后定义包体,在用.net调用生成数据集即可

.net调用oracle带参数的存储过程,返回数据集

Oracle这个复杂一些,步骤如下:

在pl/sql中首先写包的定义文件

CREATE OR REPLACE PACKAGE ZHBB AS
    TYPE t_cursor IS REF CURSOR ;
Procedure ZH11 (rq IN char, io_cursor IN OUT t_cursor);

Procedure ZH12 (rq IN char, io_cursor IN OUT t_cursor);

END ZHBB;

其次写包体的定义文件

CREATE OR REPLACE PACKAGE BODY ZHBB AS

Procedure ZH11(rq IN char, io_cursor IN OUT t_cursor) IS

v_cursor t_cursor;

BEGIN

OPEN v_cursor FOR

Select * from aa where ny=rq;

io_cursor := v_cursor;

END ZH11;

Procedure ZH12 (rq IN char, io_cursor IN OUT t_cursor) IS

。。。。。

END ZH12;

.net调用方法:

public static DataTable GetDataTable(string PackageName,string ProName,string connString,string rq)

{

connString=” Provider= MSDAORA.1;User ID=xx;Data Source=xx;Password=xx;”

//定义下新的链接方法,因为原来的驱动"OraOLEDB.Oracle"不能满足需求,设置为"MSDAORA.1"

OleDbConnection raclecon = new OleDbConnection(connString);

Oraclecon.Open();

OleDbCommand cmd = new OleDbCommand("{Call "+ PackageName +"."+ ProName +"(?, {resultset 0, io_cursor} )}", Oraclecon);

cmd.Connection = Oraclecon;

cmd.Parameters.Add("rq", OleDbType.VarChar, 8).Value = ""+ rq +"";

OleDbDataAdapter da = new OleDbDataAdapter(cmd);

DataTable dt = new DataTable();

//DataSet ds = new DataSet();

da.Fill(dt);

Oraclecon.Close();

Oraclecon.Dispose();

return dt;

}

}

时间: 2024-10-18 16:08:03

c# 调用带有参数的存储过程方法--oracle【转载】的相关文章

shell脚本调用带参数的存储过程

主要有 #!/bin/bash source /etc/profile source ~/.bash_profile ################################################################## #功能描述:调用带有输入参数和输出参数的存储过程 #执行周期:日 # CRONTAB: * 1 * * * * ${prog_path}CALL_PRODEDURE.sh >> ${prog_path}CALL_PRODEDURE.log 2&a

在C#中怎么调用带参数的存储过程啊??

1)执行一个没有参数的存储过程的代码如下:SqlConnection conn=new SqlConnection(“connectionString”);SqlDataAdapter da = new SqlDataAdapter();da.selectCommand = new SqlCommand();da.selectCommand.Connection = conn;da.selectCommand.CommandText = "NameOfProcedure";da.sel

在Java中调用带参数的存储过程

JDBC调用存储过程: CallableStatement 在Java里面调用存储过程,写法那是相当的固定: Class.forName(.... Connection conn = DriverManager.getConnection(.... /** *p是要调用的存储过程的名字,存储过程的4个参数,用4个?号占位符代替 *其余地方写法固定 */ CallableStatement cstmt = conn.prepareCall("{call p(?,?,?,?)}"); /*

ado.net 调用带参数的存储过程

String connString = "Data Source = localhost; Initial Catalog = hkjc;User ID = sa;Pwd = 123";            SqlConnection conn = new SqlConnection(connString);            conn.Open();            SqlCommand cmd = new SqlCommand("GetManagement&q

20150825 C# 调用带参数的存储过程 模板

////// exec proceudre2                        //System.Data.SqlClient.SqlConnection sqlcon = new System.Data.SqlClient.SqlConnection("server=(local);database=pubs;uid=sa;pwd=;");                        System.Data.SqlClient.SqlConnection sqlcon

mysql创建和调用out参数的存储过程

CREATE PROCEDURE sp_add(a int, b int,out c int) begin set c=a+ b; end; 调用过程: call sp_add (1,2,@a); select @a; 原文地址:https://www.cnblogs.com/hlhx/p/9745966.html

EF调用原生SQL和存储过程方法(转载)

原文地址:http://www.cnblogs.com/miro/p/4518811.html     https://msdn.microsoft.com/en-us/data/jj592907

Java调用SQL Server的存储过程详解

转载自Microsoft的官方文档 http://msdn2.microsoft.com/zh-cn/library/ms378995.aspx收录于 www.enjoyjava.net/f25 本文较长,包含了如下几部分 使用不带参数的存储过程 使用带有输入参数的存储过程 使用带有输出参数的存储过程 使用带有返回状态的存储过程 使用带有更新计数的存储过程 1使用不带参数的存储过程 使用 JDBC 驱动程序调用不带参数的存储过程时,必须使用 call SQL 转义序列.不带参数的 call 转义

(转)Java调用SQL Server的存储过程详解

本文转载自:http://dev.yesky.com/128/8088128.shtml 1使用不带参数的存储过程 使用 JDBC 驱动程序调用不带参数的存储过程时,必须使用 call SQL 转义序列.不带参数的 call 转义序列的语法如下所示: 以下是引用片段:{call procedure-name} 作为实例,在 SQL Server 2005 AdventureWorks 示例数据库中创建以下存储过程: 以下是引用片段:CREATE PROCEDURE GetContactForma