How can i pass parameter to sql script?

前端 未结 2 1971
死守一世寂寞
死守一世寂寞 2020-12-17 10:07
CREATE TABLE DMS_POP_WKLY_REFRESH_20100201 NOLOGGING PARALLEL AS
SELECT wk.*,bbc.distance_km ,NVL(bbc.tactical_broadband_offer,0) tactical_broadband_offer ,
       s         


        
相关标签:
2条回答
  • 2020-12-17 10:41

    SQL*Plus uses &1, &2... &n to access the parameters.

    Suppose you have the following script test.sql:

    SET SERVEROUTPUT ON
    SPOOL test.log
    EXEC dbms_output.put_line('&1 &2');
    SPOOL off
    

    you could call this script like this for example:

    $ sqlplus login/pw @test Hello World!
    

    Edit:

    In a UNIX script you would usually call a SQL script like this:

    sqlplus /nolog << EOF
    connect user/password@db
    @test.sql Hello World!
    exit
    EOF
    

    so that your login/password won't be visible with another session's ps

    0 讨论(0)
  • 2020-12-17 10:54

    Two options save vijay.sql

    declare
    begin
    execute immediate 
    'CREATE TABLE DMS_POP_WKLY_REFRESH_'||to_char(sysdate,'YYYYMMDD')||' NOLOGGING PARALLEL AS
    SELECT wk.*,bbc.distance_km ,NVL(bbc.tactical_broadband_offer,0) tactical_broadband_offer ,
           sel.tactical_select_executive_flag,
           sel.agent_name,
           res.DMS_RESIGN_CAMPAIGN_CODE,
           pclub.tactical_select_flag
    FROM   spineowner.pop_wkly_refresh_20100201 wk,
           dms_bb_coverage_102009 bbc,
           dms_select_executive_group sel,
           DMS_RESIGN_CAMPAIGN_26052009 res,
           DMS_PRIORITY_CLUB pclub
    WHERE  wk.mpn = bbc.mpn(+)
    AND    wk.mpn = sel.mpn (+)
    AND    wk.mpn = res.mpn (+)
    AND    wk.mpn = pclub.mpn (+)'
    end;
    /
    

    The above will generate table names automatically based on sysdate. If you still need to pass as variable, then save vijay.sql as

    declare
    begin
    execute immediate 
    'CREATE TABLE DMS_POP_WKLY_REFRESH_'||&1||' NOLOGGING PARALLEL AS
    SELECT wk.*,bbc.distance_km ,NVL(bbc.tactical_broadband_offer,0) tactical_broadband_offer ,
           sel.tactical_select_executive_flag,
           sel.agent_name,
           res.DMS_RESIGN_CAMPAIGN_CODE,
           pclub.tactical_select_flag
    FROM   spineowner.pop_wkly_refresh_20100201 wk,
           dms_bb_coverage_102009 bbc,
           dms_select_executive_group sel,
           DMS_RESIGN_CAMPAIGN_26052009 res,
           DMS_PRIORITY_CLUB pclub
    WHERE  wk.mpn = bbc.mpn(+)
    AND    wk.mpn = sel.mpn (+)
    AND    wk.mpn = res.mpn (+)
    AND    wk.mpn = pclub.mpn (+)'
    end;
    /
    

    and then run as sqlplus -s username/password @vijay.sql '20100101'

    0 讨论(0)
提交回复
热议问题