gpt4 book ai didi

c# - 如何从oracle存储过程中读取不同类型的输出参数?

转载 作者:行者123 更新时间:2023-11-30 16:54:36 25 4
gpt4 key购买 nike

我有一个带有两个数字输出参数和一个引用游标的 Oracle 存储过程。下面是程序的结构

procedure SearchData
(
p_search in number
,p_pages out number
,p_pageNumber out number
,p_resultSet out sys_refcursor
)

我需要使用 C# 阅读它们。

最佳答案

首先你应该安装 oracle client for c# eg: I always use

using Oracle.ManagedDataAccess.Client;
using Oracle.ManagedDataAccess.Types;

需要到oracle网站下载才能在c#中使用

然后你可以像下面这样调用过程

   OracleCommand cmd = con.CreateCommand(); //con is the oracle connection
cmd.CommandType = CommandType.StoredProcedure;
cmd.Connection = con;
cmd.CommandText = "SearchData";

OracleParameter p_search = new OracleParameter();
p_search.OracleDbType = OracleDbType.Int64;
p_search.Direction = ParameterDirection.Input;
p_search.Value = .....;

OracleParameter p_pages = new OracleParameter();
p_pages.OracleDbType = OracleDbType.Int64;
p_pages.Direction = ParameterDirection.Output;
p_pages.Size = 1000;

OracleParameter p_pageNumber = new OracleParameter();
p_pageNumber.OracleDbType = OracleDbType.Int64;
p_pageNumber.Direction = ParameterDirection.Output;
p_pageNumber.Size = 1000;

OracleParameter p_resultSet = new OracleParameter();
p_resultSet.OracleDbType = OracleDbType.RefCursor;
p_resultSet.Direction = ParameterDirection.Output;

cmd.Parameters.Add(p_search);
cmd.Parameters.Add(p_pages);
cmd.Parameters.Add(p_page_number);
cmd.Parameters.Add(p_resultSet);

con.Open();
cmd.ExecuteNonQuery();

执行后你可以调用out参数来获取值..like

string pages = p_pages.Value.ToString()

如果是引用游标,我们需要使用oracle reader

OracleDataReader rd = ((OracleRefCursor)cmd.Parameters[3].Value).GetDataReader(); 
//3 is for 4rth parameter bcos parameter index start from 0

然后读取 rd 以获取值..

关于c# - 如何从oracle存储过程中读取不同类型的输出参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30297167/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com