使用 C# 执行存储过程
Posted
技术标签:
【中文标题】使用 C# 执行存储过程【英文标题】:Executing Stored Procedure using C# 【发布时间】:2018-04-02 11:18:35 【问题描述】:我有一个名为 Get_Added_Request_ID 的过程,使用此过程我需要返回 Request_ID 值 (VARCHAR2)。我参考了 Oracle 和 Microsoft 发布的大量文档,但仍然找不到好的解决方案,可能是因为我是 Oracle 和 ASp.NET 的新手。请有人在这个问题上帮助我。提前致谢
-- 参数类型模式默认? -- ATTR_ VARCHAR2 IN -- REQUEST_ID VARCHAR2 输出
【问题讨论】:
【参考方案1】:请查看此link 以获取有关如何使用 oracle 数据提供程序连接到 oracle 的文档
您应该使用来自 link 的 oracle 数据提供程序来连接 oracle。
您的场景的示例代码将是
Using System;
using System.Collections.Generic;
using System.Text;
using System.Data.OracleClient;
using System.Data;
namespace CallingOracleStoredProc
class Program
static void Main(string[] args)
using (OracleConnection objConn = new OracleConnection("Data Source=*your datasource*; User ID=*Your UserID*; Password=*Your Password*"))
OracleCommand objCmd = new OracleCommand();
objCmd.Connection = objConn;
objCmd.CommandText = "Get_Added_Request_ID";
objCmd.CommandType = CommandType.StoredProcedure;
objCmd.Parameters.Add("ATTR_", OracleType.NVarChar).Value = "test";
objCmd.Parameters.Add("REQUEST_ID", OracleType.NVarChar).Direction = ParameterDirection.Output;
try
objConn.Open();
objCmd.ExecuteNonQuery();
System.Console.WriteLine("The Request ID is 0", objCmd.Parameters["REQUEST_ID"].Value);
catch (Exception ex)
System.Console.WriteLine("Exception: 0",ex.ToString());
objConn.Close();
【讨论】:
你能告诉我如何检查Request_ID的值是否被存储或解析? 我已经编辑了上述答案中的错别字。 Request_ID 将作为上述代码的输出,可以通过 objCmd.Parameters["REQUEST_ID"].Value 获取,它将返回 Get_Added_Request_ID 存储过程的 REQUEST_ID 参数的值 感谢您的编辑。你能告诉我应该在哪里添加上面的代码吗?在 Web API 项目的哪个文件夹中?【参考方案2】:使用执行标量返回 1 行 - 1 列值并将其存储在适当的变量中 例如:- SqlHelper.ExecuteScalar(_connectionString, CommandType.StoredProcedure, "Get_Added_Request_ID", null);
注意:- ExecuteScalar 来自 nuget Microsoft.Application Block
【讨论】:
以上是关于使用 C# 执行存储过程的主要内容,如果未能解决你的问题,请参考以下文章