Skip to Main Content

SQL & PL/SQL

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

Interested in getting your voice heard by members of the Developer Marketing team at Oracle? Check out this post for AppDev or this post for AI focus group information.

expression ‘<null>’ cannot be used as an assignment target

Rony RAUZDUELJun 5 2024

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
  -- out parameters
  , Err OUT INT
  , pXML OUT VARCHAR2
  , pID_NEW OUT VARCHAR2
)

I create a function

function verifie_messages_erreurs(
    pPROC in varchar2 -- 'PR_CORH_RECR_ACCEPTER_BESOIN'
    , pTABL_PARA in sys.odcivarchar2list -- ('PAYE', '3170', '1287', '1000', Err, pXML, pID_NEW)
    , 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; -- retour du test
  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'));   
    
    -- agréger le contenu de la liste de valeurs des paramètres de la fonction
    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:
This post has been answered by Rony RAUZDUEL on Jun 5 2024
Jump to Answer

Comments

Post Details

Added on Jun 5 2024
2 comments
134 views