Estou analisando um processo, que recebe o conteúdo de um arquivo dispostos em um "array"
Porém eu criei a variável:V_SCRIPT_OBJETO DBMS_SQL.VARCHAR2A;
V_SQL CLOB;
FOR I IN P_SCRIPT_OBJETO.FIRST .. P_SCRIPT_OBJETO.LAST LOOP
V_LINHA := REPLACE(P_SCRIPT_OBJETO(I), CHR(13), '');
V_SCRIPT_OBJETO(I) := V_LINHA;
V_FINAL := I;
V_SQL := V_SQL || V_SCRIPT_OBJETO(I);
END LOOP;
Afim de gravar o conteúdo do arquivo recebido na coluna de tabela de log:V_SQL CLOB;
Mas ao chamar a procedure que deverá gravar o log, passando como parâmetro a variável: V_SQL para a coluna: P_ARQUIVO, recebo o erro abaixo:-- Coluna da tabela: LOG_VERSIONAMENTO_GTO do tipo CLOB
P_ARQUIVO CRM5.LOG_VERSIONAMENTO_GTO.ARQUIVO%TYPE -- CLOB
P_REC_LOG( 'SC'
,(DBMS_UTILITY.GET_TIME - G_START_TIME)/100
,0
,'S'
,'IF - P_TIPO_OBJETO = ' || P_TIPO_OBJETO
,V_SQL );
Creio que o erro, seja dessa atribuição:ORA-06502: PL/SQL: numeric or value error: character string buffer too small]
Ainda, tentei associar direto a variável: V_SCRIPT_OBJETO (DBMS_SQL.VARCHAR2A), diretamente na chamada da procedure e recebo o erro:V_SQL := V_SQL || V_SCRIPT_OBJETO(I);
P_REC_LOG( 'SC'
,(DBMS_UTILITY.GET_TIME - G_START_TIME)/100
,0
,'S'
,'IF - P_TIPO_OBJETO = ' || P_TIPO_OBJETO
,V_SCRIPT_OBJETO); -- V_SQL );
Obviamente, por conta do data type da coluna ser um CLOB e o valor passado ser um: DBMS_SQL.VARCHAR2A.Error: PLS-00306: wrong number or types of arguments in call to 'P_REC_LOG'
Em resumo, como posso gravar na tabela de log, o conteúdo do arquivo recebido por um parâmetro de entrada do tipo: DBMS_SQL.VARCHAR2A?
Desde de já agradeço quem possa ajudar!
Att.