{Oracle}

Fermé
foxrol Messages postés 1 Date d'inscription lundi 15 juillet 2002 Statut Membre Dernière intervention 27 juin 2009 - 27 juin 2009 à 09:08
jee pee Messages postés 40360 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 24 octobre 2024 - 27 juin 2009 à 23:04
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.

2 réponses

chuka Messages postés 965 Date d'inscription samedi 11 octobre 2008 Statut Membre Dernière intervention 29 juillet 2010 378
27 juin 2009 à 09:30
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
jee pee Messages postés 40360 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 24 octobre 2024 9 390
27 juin 2009 à 23:04
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