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
ORA - 06502:PL/SQL:数字或值错误:批量绑定:截断绑定