составной скрипт

karcun
Дата: 19.11.2008 14:53:14
8i
Есть задача: написать скрипт инсталляции.
Ограничение: всё силами оракла
Есть ли возможность распределить DDL по разным файлам и сделать нечто такое:
SQL> run install.sql
install.sql:
if (...) then
    run 'table.test0.create.sql';
elsif (...) then
    run 'table.test1.create.sql';
end if;
Заранее спасибо огромное.
Alexey181
Дата: 19.11.2008 14:56:30
Не проще ли создать базку (схему) , а потом имп.эксп использовать?
karcun
Дата: 19.11.2008 15:00:13
дык в том-то и дело, структура полей разная.
надо таблицы с разным набором полей делать.

я и подумал:
создам кучу запросов, распихаю по файлам и потом только инсталл.скуль запускай и бед не знай
orawish
Дата: 19.11.2008 15:09:36
set echo off serveroutput on
spool o1
exec dbms_output.put_line('start '||user||'_blabla.sql')
spool off
set echo on
start o1.lst
Alexey181
Дата: 19.11.2008 15:09:39
karcun
дык в том-то и дело, структура полей разная.
надо таблицы с разным набором полей делать.

я и подумал:
создам кучу запросов, распихаю по файлам и потом только инсталл.скуль запускай и бед не знай

не совсем ясно, т.е. вам нельзя сделать один файл с кучей DDL и его запустить?
dba123
Дата: 19.11.2008 16:27:52
SQL> set verify off
SQL> set termout off
SQL> set feed off
SQL> 
SQL> define _if_11g="dummy.sql"
SQL> define _s1 = 'install_11g.sql'
SQL> define _s2 = 'free.sql'
SQL> 
SQL> col cracker_11g noprint new_value _if_11g
SQL> 
SQL> var script1 varchar2(30)
SQL> var script2 varchar2(30)
SQL> 
SQL> execute :script1 := '&_s1';
SQL> execute :script2 := '&_s2';
SQL> 
SQL> select decode(substr(banner,instr(banner, 'Release ')+8,2),11,:script1,:script2) cracker_11g
  2  from v$version
  3  where rownum=1;

SQL> 
SQL> set termout on
SQL> set feed on
SQL> 
SQL> @&_if_11g

                                                                                                 %
                                                                %                   MaxPoss    Max
Tablespace Name           KBytes         Used         Free   Used      Largest       Kbytes   Used
------------------- ------------ ------------ ------------ ------ ------------ ------------ ------
*SYSAUX                  645,120      634,688       10,432   98.4        6,080    4,161,536   15.5
*SYSTEM                  634,880      633,088        1,792   99.7          960    4,161,536   15.3
*TEMP                  1,048,576    1,048,576            0  100.0            0    1,048,576  100.0
*UNDOTBS1              2,933,760        9,728    2,924,032     .3    2,913,216    4,161,536   70.5
*USERS                 6,273,408    5,109,696    1,163,712   81.5      771,776    8,323,072   75.4
                    ------------ ------------ ------------
sum                   11,535,744    7,435,776    4,099,968

5 rows selected.

SQL> 
SQL> undef _if_11g
SQL> undef _s1
SQL> undef _s2 
SQL> 
karcun
Дата: 19.11.2008 18:36:32
хм... не совсем всё понял, ну да поразбираюсь.
Всем откликнувшимся спасибо!
Теперь я знаю в какую сторону RTFMить :)