【问题标题】:Stored Procedure in C# ORA-06502C# ORA-06502 中的存储过程
【发布时间】:2015-12-16 15:08:25
【问题描述】:

存储过程:

CREATE OR REPLACE PROCEDURE userById (
  username OUT account.username%TYPE
)
IS 
BEGIN
  SELECT username
  INTO username
  FROM account
  WHERE id = 1;
END;

当我运行上述存储过程时,c# 抛出 ORA-06502 错误。

当我在 SQL Developer 中执行存储过程时,我得到了一个结果。

控制台应用程序

NuGet Oracle.ManagedDataAccess 包已安装。

using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Oracle.ManagedDataAccess.Client;

namespace Stored_Procedure_Oracle
{
    class Program
    {
        static void Main(string[] args)
        {
            var conn = new OracleConnection("Data Source=127.0.0.1:1521/orcl;User Id=user;Password=password;");
        string user;

            conn.Open();

            using (var cmd = conn.CreateCommand())
            {
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.CommandText = "userById"; // StoredProcedure name

                cmd.Parameters.Add(new OracleParameter()
                {
                    ParameterName = "User",
                    Direction = ParameterDirection.Output,
                    OracleDbType = OracleDbType.Varchar2
                });

                cmd.ExecuteReader();

                if (cmd.RowSize > 0)
                {
                    user = cmd.Parameters["User"].ToString();
                }
            }
        }
    }
}

【问题讨论】:

    标签: c# oracle stored-procedures plsql


    【解决方案1】:

    我必须添加

    大小 = 16

    到 OracleParameter。

    【讨论】:

      猜你喜欢
      • 2020-08-17
      • 2015-06-11
      • 1970-01-01
      • 2018-01-03
      • 2013-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-10
      相关资源
      最近更新 更多