C#ORA-06502中的存储过程
本文关键字:存储过程 C#ORA-06502 | 更新日期: 2023-09-27 18:27:12
存储过程:
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();
}
}
}
}
}
我不得不添加
尺寸=16
到OracleParameter。