Oracle
 sql >> Base de données >  >> RDS >> Oracle

Exécutez le code sql avec des variables dans la fenêtre de code Oracle SQL Developer

si je lis ceci correctement, je pense que vous recherchez Variables de substitution Oracle.

cela vous demandera à chaque fois d'entrer les valeurs, en utilisant &val il vous demandera @ runtime

  SELECT
      CFS.CAE_SEC_ID,
      CFS.FM_SEC_CODE,
      CFS.LAST_USER_ID,
      CASE 
          when &p_USBank_n = 1 then
            sl.usbank_to_edit
          else
            CASE 
              when '&p_user_id_c' = CFS.last_user_id then
                sl.owner_to_edit
              else
                sl.to_edit
            end
        end canEdit
    FROM
    CAEDBO.CAE_FOF_SECURITY CFS
    INNER JOIN caedbo.CAE_DATA_SET_ELEMENT CDSE_STAT 
        ON (CDSE_STAT.DATA_SET_ELEMENT_ID = CFS.APPR_STATUS)
    INNER JOIN caedbo.CAE_STATE_LOOKUP sl 
        ON (sl.object_state =  CDSE_STAT.data_set_element_id)
   where 
      CFS.CAE_SEC_ID IN (3741, 3744, 3748, 3752);

changez-le en &&var pour qu'il conserve la valeur, puis utilisez

UNDEFINE var 

pour l'effacer

Vous pouvez maintenant les définir en haut de la page (évitant ainsi l'invite) en utilisant DEFINE en tant que tel

DEFINE XYZ = 5
DEFINE AAA = to_date('10/10/2010','mm/dd/rrrr')
DEFINE textString = AaBbCc

SELECT &&XYZ b, &&AAA a, '&&textString' textString
  from dual ;

  B                      A                         TEXTSTRING 
  ---------------------- ------------------------- ---------- 
  5                      10.OCT.2010 00:00         AaBbCc     
  --typing define will show you all the "defined" values 
define

  DEFINE XYZ = "5"
  DEFINE TEXTSTRING = "AaBbCc"
  DEFINE AAA = "to_date('10/10/2010','mm/dd/rrrr')"

la double esperluette « retiendra » la valeur jusqu'à ce que vous la DÉFINIEZ (voir ci-dessus) ou que vous la redéfinissiez.