OraStoredProc,ORA-06502,ORA-06512,buffer too small 解决办法

我的解决思路,可供你参考
//一个参数有返回值

function TStoreProOCI.GetOneParam(FuncName: string; Param, Value: string):
    string;

var
    OraStoredProc1                      : TOraStoredProc;
    Str                                : string;

begin
    OraStoredProc1 := TOraStoredProc.Create(nil);
    try
        OraStoredProc1.Session := FMyComDBConn.FSession;
        OraStoredProc1.SQL.Add('begin');
        Str := Format(':RESULT :=%s(:%s);', [FuncName, Param]);
        OraStoredProc1.SQL.Add('end;');

        OraStoredProc1.StoredProcName := FuncName;


        OraStoredProc1.Params.CreateParam(ftString, 'Result', ptResult);
        OraStoredProc1.Params.CreateParam(ftString, Param, ptInput);

        OraStoredProc1.ParamByName(Param).Value := Value;

        OraStoredProc1.Execute;
        Result := OraStoredProc1.ParamByName('Result').AsString;
        OraStoredProc1.Close;

    finally
        OraStoredProc1.Free;
    end;
end;
当Result返回值,太长了,如超过8000,就会出现ORA-06502:PL/SQL:numeric or value error
ORA-06512,字符缓冲太小buffer too small
修改


        OraStoredProc1.Params.CreateParam(ftString, 'Result', ptResult);
        改为

        OraStoredProc1.Params.CreateParam(ftMemo, 'Result', ptResult);
解决问题
posted @ 2009-05-29 09:41  闫磊博客  阅读(1769)  评论(0)    收藏  举报