Oracle Database 21c Express Edition Release 21.0.0.0.0 - Production
I have a procedure whose this is the signature :
CREATE OR REPLACE PROCEDURE PR_CORH_RECR_ACCEPTER_BESOIN (
pAPPL IN VARCHAR2
, pID_SOCI IN VARCHAR2
, pSESS_ID_LOGI IN VARCHAR2
, pID_BESO IN VARCHAR2
, Err OUT INT
, pXML OUT VARCHAR2
, pID_NEW OUT VARCHAR2
)
I create a function
function verifie_messages_erreurs(
pPROC in varchar2
, pTABL_PARA in sys.odcivarchar2list
, pTEST_ERR out int
, pTEST_XML out varchar2
, pTEST_ID_NEW out varchar2
) return boolean
is
vPLSQL_BLOC varchar2(2000);
vPARAM varchar2(250);
bRESU boolean := false;
begin
dbms_output.put_line('#############################################################');
dbms_output.put_line(' Lancement du test procédure de saisie Nibelis ');
dbms_output.put_line('#############################################################');
dbms_output.put_line('Heure de début : ' || TO_CHAR(SYSDATE, 'DD MON YYYY HH24:MI:SS'));
select listagg('''' || column_value || '''', ', ') within group (order by rownum)
into vPARAM
from table(pTABL_PARA);
dbms_output.put_line(vPARAM);
vPLSQL_BLOC := 'BEGIN ' || pPROC || '(' || vPARAM || ', ''' || pTEST_ERR || ''', ''' || pTEST_XML || ''', ''' || pTEST_ID_NEW || '''); END;';
dbms_output.put_line(vPLSQL_BLOC);
execute immediate vPLSQL_BLOC into vPARAM;
dbms_output.put_line(vPARAM);
dbms_output.put_line('Heure de fin : ' || TO_CHAR(SYSDATE, 'DD MON YYYY HH24:MI:SS'));
dbms_output.put_line('');
return bRESU;
end verifie_messages_erreurs;
When I invok this function
SET SERVEROUTPUT ON SIZE 1000000
DECLARE
bRESU boolean;
Err NUMBER(10);
pXML VARCHAR2(2000);
pID_NEW VARCHAR2(50);
BEGIN
bRESU := utl_unit_test.verifie_messages_erreurs(
pPROC => 'PR_CORH_RECR_ACCEPTER_BESOIN'
, pTABL_PARA => sys.odcivarchar2list('PAYE', '3170', '1287', '1000')
, pTEST_ERR => Err
, pTEST_XML => pXML
, pTEST_ID_NEW => pID_NEW
);
if bRESU then
utl_unit_test.affiche_message_compare(bRESU);
dbms_output.put_line('true');
else
utl_unit_test.affiche_message_compare(bRESU);
dbms_output.put_line('false');
end if;
END;
Rapport d'erreur -
ORA-06550: Ligne 1, colonne 68 :
PLS-00363: expression '<null>' ne peut être utilisée comme cible d'affectation
ORA-06550: Ligne 1, colonne 72 :
PLS-00363: expression '<null>' ne peut être utilisée comme cible d'affectation
ORA-06550: Ligne 1, colonne 76 :
PLS-00363: expression '<null>' ne peut être utilisée comme cible d'affectation
ORA-06550: Ligne 1, colonne 7 :
PL/SQL: Statement ignored
ORA-06512: à "MGUSER.UTL_UNIT_TEST", ligne 542
ORA-06512: à ligne 7
06550. 00000 - "line %s, column %s:\n%s"
*Cause: Usually a PL/SQL compilation error.
*Action: