sql >> Databáze >  >> RDS >> Oracle

Kdy musím v Oracle SQL použít středník vs lomítko?

Vím, že toto je staré vlákno, ale právě jsem na něj narazil a mám pocit, že to nebylo úplně vysvětleno.

V SQL*Plus je obrovský rozdíl mezi významem / a ; protože fungují jinak.

; ukončuje příkaz SQL, zatímco / provede vše, co je v aktuálním "bufferu". Takže když použijete ; a a / příkaz se ve skutečnosti provede dvakrát.

Můžete to snadno vidět pomocí / po spuštění příkazu:

SQL*Plus: Release 11.2.0.1.0 Production on Wed Apr 18 12:37:20 2012

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

Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning and OLAP options

SQL> drop table foo;

Table dropped.

SQL> /
drop table foo
           *
ERROR at line 1:
ORA-00942: table or view does not exist

V tomto případě si člověk skutečně všimne chyby.


Ale za předpokladu, že existuje skript SQL, jako je tento:

drop table foo;
/

A toto se spouští z SQL*Plus, pak to bude velmi matoucí:

SQL*Plus: Release 11.2.0.1.0 Production on Wed Apr 18 12:38:05 2012

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


Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning and OLAP options

SQL> @drop

Table dropped.

drop table foo
           *
ERROR at line 1:
ORA-00942: table or view does not exist

/ je vyžadován hlavně pro spouštění příkazů, které mají vložený ; jako CREATE PROCEDURE ,CREATE FUNCTION ,CREATE PACKAGE příkazy a pro všechny BEGIN...END bloky.



  1. Jak nainstalovat MySQL na CentOS 6

  2. Jak ignorovat chybu duplicitního klíče v T-SQL (SQL Server)

  3. Proč není v PL/SQL povoleno statické ddl?

  4. Vícenásobné databázové připojení v Rails