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
Vous devez vous connecter pour publier un commentaire.
vous avez oublié de mettre dans votre instruction if..
et mieux si vous utilisez
declare
également à la première ligne, avant de commencer commencePour la sortie en slqplus utiliser l'invite de commande. Pour la sortie de pl/sql (c'est à dire à l'intérieur d'un début/fin de bloc) utiliser le dbms_output.put_line() fonction.