Début/FIN et de CRÉER une Table unique .fichier sql

J'ai un petit script SQL que j'exécute avec Oracle SQL*Plus pour émuler créer ou de remplacer sur les tables:

BEGIN
    EXECUTE IMMEDIATE 'DROP TABLE symbols';
EXCEPTION
    WHEN OTHERS THEN
        IF SQLCODE != -942 THEN
    END IF;
END;
/
CREATE TABLE symbols ( 
            blah blah,
            blah blah,
        );
EXIT;

SQL*Plus de ligne de commande est:

sqlplus aegsys15_owner/pass#234@MARVINUAT03 @createSymbolsTable.sql << EOF
> EOF

Si je omettre la barre oblique (/) après la FIN, elle semble être la seule à traiter la première début/FIN de bloc, et ignore le fait de CRÉER le TABLEAU de la section en dessous. Aussi, il n'a pas d'imprimer quoi que ce soit, à tout juste la connexion/déconnexion:

SQL*Plus: Release 11.2.0.1.0 Production on Tue Sep 13 15:49:34 2011

Copyright (c) 1982, 2009, Oracle.  All rights reserved.

Connected to:
Oracle Database 11g Enterprise Edition Release 11.1.0.7.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

 78  Disconnected from Oracle Database 11g Enterprise Edition Release 11.1.0.7.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

Cependant, si j'ai la barre oblique qu'il me donne une erreur:

    END IF;
    *
ERROR at line 6:
ORA-06550: line 6, column 5:
PLS-00103: Encountered the symbol "END" when expecting one of the following:
( begin case declare exit for goto if loop mod null pragma
raise return select update while with <an identifier>
<a double-quoted delimited-identifier> <a bind variable> <<
continue close current delete fetch lock insert open rollback
savepoint set sql execute commit forall merge pipe purge

CREATE TABLE symbols (
             *
ERROR at line 1:
ORA-00955: name is already used by an existing object

Tout d'abord, quel est le meilleur moyen d'avoir à la fois le point de début/FIN de bloc d'exception au sommet, et le de CRÉER la TABLE de bloc dans le même .fichier sql?

Et d'autre part, ce qui est une façon d'obtenir quelques conseils de la sortie de SQL*Plus? Chaque .fichier sql que nous, peuvent avoir de multiples instructions de création (des tables, des index, des synonymes, etc.). Notre sortie idéal serait quelque chose comme:

TABLE foo: Pass
SYNONYM bar: Fail
INDEX foo_1: Pass

Ne sais pas si quelque chose comme cela est réalisable avec SQL ou PL/SQL bien - heureux d'écrire un Bash ou Python script wrapper autour de cela, si vous les gars pense que c'est une meilleure solution.

Cheers,
Victor

  • vous pouvez exécuter les deux BEGIN/END et créer une table dans un fichier sql, mais vous avez à faire mineur édition dans votre cade
InformationsquelleAutor victorhooi | 2011-09-13