{Oracle}

Bonjour

Excusez moi de vous déranger mais j'ai un énorme problème.

Je voudrais savoir s'il est possible dans un script de création de schéma sous oracle ne pas coder certaines informations en dur.

En effet je voudrais inscrire certaine informations comme le nom de la tablespace en variables et lors de l'exécution du script, ces informations seront lues à partir d'un fichier.

S'il est possible de le faire merci de me le dire et me donner un exemple.
Configuration: Windows XP
Firefox 3.0.11

2 réponses

  1. Salut,
    En fait, il faut que tu passes par un fichier temporaire:
    echo create tablespace %1>>mon_fichier.sql
    echo datafile 'ton_chemin' size 512M>>mon_fichier.sql
    echo autoextend on next 512M;>>mon_fichier.sql
    echo create user %2 identified by mon_passwd>>mon_fichier.sql
    echo default tablespace %1>>mon_fichier.sql
    echo temporary tablespace temp;>>mon_fichier.sql
    sqlplus user/password@mon_instatnce @mon_fichier.sql
    ainsi quand tu lances ton batch, tu passes en arg le nom de ton tablespace et le nom du user...
    J'espere ca pourra t'aider!!
    @+
    0
    1. Modérateur
      Salut,

      Il est possible de faire un fichier de variables (.sql) qui est lancé avant la création de l'objet comme :

      envt.sql :
      rem  PETIT ESPACE
      rem
      def  cm_init_t1 = 10k
      def  cm_next_t1 = 10k
      def  cm_maxi_t1 = 25
      def  cm_pcti_t1 = 0
      def  cm_pctf_t1 = 5

      Et le script de création d'une table en lançant ce sql récupère les variables qui sont utilisées dans le storage du create table :

      acc_appl.sql :
      Rem  DESCRIPTION DES ACCES POSSIBLES A CHAQUE APPLICATION
      Rem
      
      start envt.sql
      
      Create table acc_appl
           (cod_module       varchar2(2)  not null, 
            cod_sous_mod     varchar2(6)  not null,
            typ_acces        varchar2(2)  not null  
           )
      storage
        (  initial     &cm_init_t1
           next        &cm_next_t1
           maxextents  &cm_maxi_t1
           pctincrease &cm_pcti_t1
        )  pctfree     &cm_pctf_t1
      /
      

      Cdlt
      0