使用 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# 执行存储过程的主要内容,如果未能解决你的问题,请参考以下文章

如何使用c#执行返回多个游标的oracle存储过程

如何在 C# 程序中执行存储过程

Asp.net(C#) 获取 执行sql server 语句/存储过程后的 多个返回值?

C#执行oracle返回游标类型的存储过程

执行 C#的服务器端程序调用Oracle的存储过程报错

C# 调用存储过程操作 OUTPUT参数和Return返回值