【发布时间】:2016-11-30 04:34:26
【问题描述】:
我在 Oracle 中有以下功能:
FUNCTION return_test (p_id varchar2) RETURN VARCHAR2
is
p_return_val VARCHAR2 (500 CHAR) := 'test';
begin
return p_return_val;
end;
我正在尝试将值输入到我的 c# 代码中,如下所示:
var dbCommand = new OracleCommand();
string retVal;
string Function_query = "PKG_TEST.return_test";
dbConnection = new OracleConnection(ConnString);
dbConnection.Open();
OracleParameterCollection dbParams = dbCommand.Parameters;
dbParams.Add("p_return_val", OracleDbType.Varchar2, System.Data.ParameterDirection.ReturnValue);
dbParams.Add("p_id", OracleDbType.Varchar2, "123", System.Data.ParameterDirection.Input);
OracleCommand cmd;
OracleParameter dbAddParam;
cmd = new OracleCommand(Function_query , dbConnection);
cmd.CommandType = CommandType.StoredProcedure;
foreach (OracleParameter dbParam in dbParams)
{
dbAddParam = (OracleParameter)dbParam.Clone(); // clones all settings
cmd.Parameters.Add(dbAddParam);
}
retVal = cmd.ExecuteScalar().tostring();
调试时的错误是:
{"ORA-06502: PL/SQL: 数值或数值错误: 字符串缓冲区 太小\nORA-06512: 在第 1 行"}
【问题讨论】: