【问题标题】:Call stored procedure and cursor parameter with OleDb使用 OleDb 调用存储过程和游标参数
【发布时间】:2012-10-06 04:16:29
【问题描述】:

我正在用 C# 开发一个连接到 Oracle 10g 数据库的应用程序。

我正在像这样使用 Oledb:

OleDbConnection conn = ConnectionUtil.CreateConexion();

OleDbCommand cmd = new OleDbCommand();
cmd.Connection = conn;
cmd.CommandText = SP_AUTENTICAR_USUARIO;
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("p_SED_USUARIO", OleDbType.VarChar).Value = strUsuario;
cmd.Parameters.Add("p_SED_PASS", OleDbType.VarChar).Value = strPass;
cmd.Parameters.Add("p_cursor", OleDbType.Cursor).Direction = ParameterDirection.Output;//I dont know what to put here

conn.Open();
cmd.ExecuteNonQuery();

OleDbDataReader objReader = (OleDbDataReader)cmd.Parameters["p_cursor"].Value;

if (objReader.Read())
{...

我需要调用存储过程并使用OleDbDataReader 读取游标。

知道怎么做吗?

谢谢,

【问题讨论】:

    标签: c# oracle oledb oledbdatareader


    【解决方案1】:

    请检查此示例代码。这是使用 OracleDataReader

    oraConn.Open();
    
    OracleCommand cursCmd = new OracleCommand("CURSPKG.OPEN_TWO_CURSORS", oraConn);
    cursCmd.CommandType = CommandType.StoredProcedure;
    cursCmd.Parameters.Add("EMPCURSOR", OracleType.Cursor).Direction = ParameterDirection.Output;
    cursCmd.Parameters.Add("DEPTCURSOR", OracleType.Cursor).Direction = ParameterDirection.Output;
    
    OracleDataReader rdr = cursCmd.ExecuteReader();
    
    Console.WriteLine("\nEmp ID\tName");
    
    while (rdr.Read())
      Console.WriteLine("{0}\t{1}, {2}", rdr.GetOracleNumber(0), rdr.GetString(1), rdr.GetString(2));
    
    rdr.NextResult();
    
    Console.WriteLine("\nDept ID\tName");
    
    while (rdr.Read())
      Console.WriteLine("{0}\t{1}", rdr.GetOracleNumber(0), rdr.GetString(1));
    
    rdr.Close();
    oraConn.Close();
    

    【讨论】:

    • 感谢回复,但是我知道如何使用OracleDataReader,但我需要使用oledbd
    猜你喜欢
    • 2017-07-19
    • 1970-01-01
    • 1970-01-01
    • 2020-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-19
    • 2012-05-10
    相关资源
    最近更新 更多