sql >> Database >  >> RDS >> Oracle

SQL-code uitvoeren met variabelen in het Oracle SQL Developer-codevenster

als ik dit goed lees, denk ik dat je op zoek bent naar Oracle-vervangingsvariabelen.

dit zal u elke keer vragen om de waarden in te voeren, door &val te gebruiken zal het u vragen @ 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);

verander het in &&var om de waarde te behouden, gebruik dan

UNDEFINE var 

om het te wissen

U kunt deze nu bovenaan de pagina instellen (waardoor de prompt wordt vermeden) door DEFINE als zodanig te gebruiken

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')"

het dubbele ampersand zal de waarde 'behouden' totdat u het ONDEFINIEERT (zie hierboven) of het opnieuw definieert.



  1. Joins op basis van voorwaarden in meerdere tabellen

  2. Doe mee aan een telquery op generation_series() en haal null-waarden op als '0'

  3. Object converteren naar CLOB

  4. MS Access:voor- en nadelen