sql >> Database teknologi >  >> RDS >> Oracle

Hvornår skal jeg bruge et semikolon vs en skråstreg i Oracle SQL?

Jeg ved, at dette er en gammel tråd, men jeg faldt lige over den, og jeg føler, at dette ikke er blevet forklaret fuldstændigt.

Der er en enorm forskel i SQL*Plus mellem betydningen af ​​en / og en ; fordi de virker anderledes.

; afslutter en SQL-sætning, hvorimod / udfører hvad der er i den aktuelle "buffer". Så når du bruger en ; og en / sætningen udføres faktisk to gange.

Du kan nemt se det ved at bruge en / efter at have kørt en erklæring:

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

I dette tilfælde bemærker man faktisk fejlen.


Men forudsat at der er et SQL-script som dette:

drop table foo;
/

Og dette køres fra SQL*Plus, så vil dette være meget forvirrende:

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

/ er hovedsageligt påkrævet for at køre sætninger, der har indlejret ; som CREATE PROCEDURE ,CREATE FUNCTION ,CREATE PACKAGE sætninger og for enhver BEGIN...END blokke.



  1. Regulære udtryk i SQL Server-servere?

  2. SQL CASE-sætning:Hvad er det, og hvad er de bedste måder at bruge det på?

  3. MySQL – Få sidste forespørgselsomkostning ved at bruge VIS STATUS SOM 'Last_Query_Cost'

  4. Hvordan opretter jeg forbindelse til en SQL Server 2008-database ved hjælp af JDBC?