IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Oracle Discussion :

Migration script SQLServer vers Oracle


Sujet :

Oracle

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 27
    Points : 20
    Points
    20
    Par défaut Migration script SQLServer vers Oracle
    Bonjour à tous, j'ai le script sql suivant pour SQLServer, quelqu'un pourrait-il m'aider pour avoir l'équivalent sous Oracle (11g/10g) ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    DECLARE @state char(100);
    SET @state = (SELECT DATA_TYPE FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'Interaction' AND COLUMN_NAME = 'IntPlace');
    IF 'char' = @state
    	BEGIN
    		PRINT 'IntPlace is a char DATA_TYPE'
    		IF 350 > (SELECT CHARACTER_MAXIMUM_LENGTH FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'Interaction' AND COLUMN_NAME = 'IntPlace')
    			BEGIN
    				PRINT 'IntPlace is smaller than 350';
    				ALTER TABLE Interaction ALTER COLUMN IntPlace char(350);
    			END
    	END
     
    IF 'varchar' = @state
    	BEGIN
    		PRINT 'IntPlace is a varchar DATA_TYPE'
    		IF 350 > (SELECT CHARACTER_MAXIMUM_LENGTH FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'Interaction' AND COLUMN_NAME = 'IntPlace')
    			BEGIN
    				PRINT 'IntPlace is smaller than 350';
    				ALTER TABLE Interaction ALTER COLUMN IntPlace varchar(350);
    			END
    	END
     
    IF 'nvarchar' = @state
    	BEGIN
    		PRINT 'IntPlace is a nvarchar DATA_TYPE'
    		IF 350 > (SELECT CHARACTER_MAXIMUM_LENGTH FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'Interaction' AND COLUMN_NAME = 'IntPlace')
    			BEGIN
    				PRINT 'IntPlace is smaller than 350';
    				ALTER TABLE Interaction ALTER COLUMN IntPlace nvarchar(350);
    			END
    	END
     
    IF 'nchar' = @state
    	BEGIN
    		PRINT 'IntPlace is a nchar DATA_TYPE'
    		IF 350 > (SELECT CHARACTER_MAXIMUM_LENGTH FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'Interaction' AND COLUMN_NAME = 'IntPlace')
    			BEGIN
    				PRINT 'IntPlace is smaller than 350';
    				ALTER TABLE Interaction ALTER COLUMN IntPlace nchar(350);
    			END
    	END
    Merci.

  2. #2
    Membre régulier
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2011
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2011
    Messages : 52
    Points : 116
    Points
    116
    Par défaut
    Bonjour,

    cela devrait ressembler à quelque chose comme ça, attention je ne l'ai pas testé donc il faudra l'adapter, de plus je n'ai pas mis tous les IF car ils se ressemblent tous :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    set serveroutput on
    set echo off
    set verify off
    set feedback off
     
    spool check_datatype.txt
     
    DECLARE
     
    state                VARCHAR2(150);
    r_data_type          VARCHAR2(106);
    r_character_length   NUMBER;  
     
    BEGIN
     
    state := 'SELECT DATA_TYPE FROM ALL_TAB_COLUMNS WHERE TABLE_NAME = ''INTERACTION'' AND COLUMN_NAME = ''INTPLACE'' ' ;
    EXECUTE IMMEDIATE state INTO r_data_type ;
     
    IF r_data_type = 'CHAR' THEN
    	dbms_output.put_line('IntPlace is a '|| r_data_type ||' DATA_TYPE') ;
    	state := 'SELECT DATA_LENGTH FROM ALL_TAB_COLUMNS WHERE TABLE_NAME = ''INTERACTION'' AND COLUMN_NAME = ''INTPLACE'' ' ;
    	EXECUTE IMMEDIATE state INTO r_character_length ;
     
      IF r_character_length <= 350 THEN
        	dbms_output.put_line('IntPlace is smaller than 350');
    			state := 'ALTER TABLE INTERACTION MODIFY (INTPLACE CHAR(350))' ;
    			EXECUTE IMMEDIATE state ;
    	END IF ;
    END IF ; 
     
    END ;
    /
     
    spool off
    Franck

Discussions similaires

  1. Migration de données vers Oracle
    Par bnoir dans le forum SQL*Loader
    Réponses: 2
    Dernier message: 23/09/2008, 15h07
  2. Réponses: 3
    Dernier message: 08/03/2007, 10h53
  3. [DOM XML] Migration script DOM vers DOMXML
    Par Fabouney dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 03/10/2006, 10h46
  4. Migration de 4D vers Oracle
    Par abdoing dans le forum 4D
    Réponses: 5
    Dernier message: 27/08/2006, 22h12
  5. Migration de données de SQLSERVER vers ORACLE 10g
    Par malik1982 dans le forum Oracle
    Réponses: 1
    Dernier message: 04/07/2006, 13h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo