Oracle
 sql >> база данни >  >> RDS >> Oracle

Кога трябва да използвам точка и запетая срещу наклонена черта в Oracle SQL?

Знам, че това е стара тема, но току-що попаднах на нея и смятам, че не е обяснено напълно.

Има огромна разлика в SQL*Plus между значението на / и ; защото работят по различен начин.

; завършва SQL израз, докато / изпълнява всичко, което е в текущия "буфер". Така че, когато използвате ; и a / операторът всъщност се изпълнява два пъти.

Можете лесно да видите това, като използвате / след изпълнение на изявление:

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

В този случай човек действително забелязва грешката.


Но ако приемем, че има SQL скрипт като този:

drop table foo;
/

И това се изпълнява от SQL*Plus, тогава това ще бъде много объркващо:

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

/ се изисква главно за изпълнение на изрази, които имат вграден ; като CREATE PROCEDURE ,CREATE FUNCTION ,CREATE PACKAGE изрази и за всеки BEGIN...END блокове.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да получите информация за тип, дефиниран от потребителя?

  2. Обръщане на низ Word по Word с помощта на SQL

  3. NEW_TIME() Функция в Oracle

  4. Oracle-XMLTYPE :Как да актуализирате стойност

  5. Въведение в PL/SQL колекциите в Oracle Database