C# ORA-06502 中的存储过程

Posted

技术标签:

【中文标题】C# ORA-06502 中的存储过程【英文标题】:Stored Procedure in C# 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();
                
            
        
    

【问题讨论】:

【参考方案1】:

我必须添加

大小 = 16

到 OracleParameter。

【讨论】:

以上是关于C# ORA-06502 中的存储过程的主要内容,如果未能解决你的问题,请参考以下文章

Oracle 存储过程无法生成 csv 文件 - ORA-06502: PL/SQL: numeric or value error: string buff

如何调用返回 1 行的存储过程?

PL/SQL - 防止 ORA-06502

ORA - 06502:PL/SQL:数字或值错误:批量绑定:截断绑定

我收到了这个错误 ORA-06502 我已经正确定义了每一件事

ORA-06502: PL/SQL: 数字或值错误 : 字符串缓冲区太小解决办法