How can I pass a parameter to a t-sql script? How can I pass a parameter to a t-sql script? unix unix

How can I pass a parameter to a t-sql script?


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

Suppose you have the following script test.sql:

SET SERVEROUTPUT ONSPOOL test.logEXEC 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 << EOFconnect user/password@db@test.sql Hello World!exitEOF

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


Two options save vijay.sql

declarebeginexecute immediate 'CREATE TABLE DMS_POP_WKLY_REFRESH_'||to_char(sysdate,'YYYYMMDD')||' NOLOGGING PARALLEL ASSELECT 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_flagFROM   spineowner.pop_wkly_refresh_20100201 wk,       dms_bb_coverage_102009 bbc,       dms_select_executive_group sel,       DMS_RESIGN_CAMPAIGN_26052009 res,       DMS_PRIORITY_CLUB pclubWHERE  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

declarebeginexecute immediate 'CREATE TABLE DMS_POP_WKLY_REFRESH_'||&1||' NOLOGGING PARALLEL ASSELECT 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_flagFROM   spineowner.pop_wkly_refresh_20100201 wk,       dms_bb_coverage_102009 bbc,       dms_select_executive_group sel,       DMS_RESIGN_CAMPAIGN_26052009 res,       DMS_PRIORITY_CLUB pclubWHERE  wk.mpn = bbc.mpn(+)AND    wk.mpn = sel.mpn (+)AND    wk.mpn = res.mpn (+)AND    wk.mpn = pclub.mpn (+)'end;/

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