C# 调用存储过程返回值不对,被截取了。求大神指导

存储过程部分:

create or replace package body PKG_AGE is
procedure AGE(c_result out varchar2) as
nsql varchar2(4000);
isExist integer;

begin
--------------------清空表数据--------------

c_result:='执行成功xx';

   EXCEPTION
     WHEN others THEN
       begin
           c_result:='错误:'||sqlerrm;
         --Rollback;
      dbms_output.put_line(sqlerrm);
        return;
     end;

end AGE;
end PKG_AGE;

代码部分:
OracleParameter[] paramlst = new OracleParameter[]
{
new OracleParameter("c_result", OracleType.VarChar, 4000)
};
paramlst[0].Direction = ParameterDirection.Output;
dt = PublicClass.GetPrcDataSet("PKG_AGE.AGE", paramlst);
logcontent = paramlst[0].Value.ToString();

                            输出的内容:
                            记录消息:

logcontent的内容是:'执行成',不是'执行成功xx';

首先检查一下你数据库里面这个字段的长度对不对,是不是插入的时候已经被截断了

c_result 是一个输出参数,赋值 c_result:='执行成功xx'; 问题里面已经贴了存储过程 代码里面给的是4000 ,完全够那几个字了。可是就是被截取。

存储过程是否重新编译

请参照一下:

https://www.cnblogs.com/imyao/articles/5409188.html