4

データベースのベースラインを再設定するためのスクリプトが多数あります。実行するスクリプトは、他の多くのスクリプトを呼び出します。

@@set_target_schema
@@drop_all

-- do some other stuff - create tables, insert data, etc

commit;

set_target_schema.sql は次のようになります。

define TARGET_SCHEMA="OUR_APP_NAME"

オプションのパラメーターを最上位スクリプトに渡し、そのパラメーターを set_target_schema.sql に渡し、その値が提供されている場合はスキーマの名前として使用し、そうでない場合はデフォルト値を使用する方法はありますか?

4

1 に答える 1

3

デフォルト値を使用できるようにするには、次のようにします。

あなたのメインファイルで:

SET VERIFY OFF

-- specify as many substitution variable as you need to. 
COLUMN 1 NEW_VALUE 1 noprint
COLUMN 2 NEW_VALUE 2 noprint
REM COLUMN 3 NEW_VALUE 3 noprint
REM ..........
REM COLUMN <N> NEW_VALUE <N> noprint    

SELECT '' "1"
     , '' "2"
  FROM dual
 WHERE 0 = 1;

-- Default values.
select decode('&1', null, 'Default1', '&1') "1" 
     , decode('&2', null, 'Default1', '&2') "2"
 from dual;

-- prints substitution variables' values
@@set_target_schema.sql '&1' '&2'

undefine 1
undefine 2

結果:

-- without parameters 
SQL> @c:\main.sql


'DEFAULT 'DEFAULT                                                               
-------- --------                                                               
Default1 Default1    


-- with parameters                                                         
SQL> @c:\main.sql parameter1 parameter2


'PARAMETER 'PARAMETER                                                           
---------- ----------                                                           
parameter1 parameter2                                                           
于 2012-12-15T00:21:40.850 に答える