存储过程:
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();
}
}
}
}
}
答案 0 :(得分:0)
我必须添加
尺寸= 16
到OracleParameter。