【问题标题】:Executing Stored Procedure using C#使用 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 输出

【问题讨论】:

    标签: c# asp.net stored-procedures plsql


    【解决方案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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-12
      • 2013-06-21
      • 2023-04-03
      • 1970-01-01
      • 2015-09-17
      • 2013-12-06
      相关资源
      最近更新 更多