我知道已经有一些关于这个错误("ORA-06502: PL/SQL: numeric or value error: character string buffer too small" is bug?)的帖子,但我已经看过了,我似乎仍然不能找出我的代码有什么问题。
在C#中,我似乎无法使用OUT参数调用存储过程。
我有一个存储过程。
CREATE OR REPLACE PROCEDURE test_sp(v_payload OUT VARCHAR2) AS
BEGIN
v_payload := 'he2';
END;
这真的是我能做的最简单的事情了。它在Oracle SQL Developer中运行。
在C#代码中。
OracleCommand command = new OracleCommand("test_sp", con);
command.CommandType = CommandType.StoredProcedure;
command.Parameters.Add(new OracleParameter("v_payload", OracleDbType.Varchar2, 32767, ParameterDirection.Output));
await command.ExecuteNonQueryAsync();
它会返回这个错误
ORA-06502:PL/SQL:数值或值错误:字符串缓冲区太小
1条答案
按热度按时间kcwpcxri1#
你使用了错误的构造函数。你使用的构造函数是:
看起来
string srcColumn
隐式地将ParameterDirection.Output
转换为字符串。试试这个: