SORU
3 Temmuz 2009, Cuma


Ne zaman bir noktalı virgül vs kullanmaya gerek Oracle bir çizgi SQL muyum?

SQL komut yazmalıyız nasıl şirketimde bazı tartışmalar bu hafta geçiriyoruz.

Arka plan: Bizim veritabanı Oracle 10 g (11 yakında yükseltme). DBA ekibimiz üretim için komut dosyaları dağıtmak için SQLPlus kullanır.

Şimdi, bir noktalı virgül ve bir eğik çizgi (/), hem de vardı çünkü başarısız bir dağıtmak atlattık. Noktalı virgül her deyim sonunda oldu ve çizgi ifadeleri arasındaydı.

alter table foo.bar drop constraint bar1;
/
alter table foo.can drop constraint can1;
/

Tetikleyiciler daha sonra senaryodaki bazı görüşler de bazı saklı yordam olarak yaratılan katma ediliyordu. ; / ikisinin de her ifade iki defa hatalar (özellikle benzersiz olması için gerekli olan ekler, neden çalışmasına neden oldu.

SQL Geliştirici bu bu olmaz TOAD durum değil. Eğer belirli komutları çalıştırmak için onlara / olmadan çalışmazlar.

Eğer bir alt program (İLAN, başlangıç, BİTİŞ) varsa PL/SQL noktalı virgül kullanılan eğik çizgi kullanmak zorunda böylece alt parçası olarak kabul edilecektir.

Sorum şu: Eğer veritabanı Oracle, SQL komut dosyası yazmak için doğru yolu nedir? DB Oracle gerektiğini biliyorsun beri hep / kullanınız?

CEVAP
18 NİSAN 2012, ÇARŞAMBA


Bu eski bir konu olduğunu biliyorum, ama ben sadece o tökezledi ve bu tamamen açıklanmış değil hissediyorum.

Farklı çalıştıkları için / ; bir anlamı arasında SQL*Plus çok büyük bir fark var.

Güncel ne varsa ; biter SQL deyimi / yürütür "oysa". tampon Kullandığınızda bir ;ve/ deyimi aslında iki kez yürütülür.

Kolayca bir deyimi çalıştırdıktan sonra: / kullanarak görebilirsiniz

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

Aslında hata bildirimleri bu durumda.

drop table foo;
/

Ve bu SQL*içinde çalıştırmak ARTI bu çok kafa karıştırıcı olabilir

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

/ esas CREATE PROCEDURE bir deyim gibi ; gömülü olan ifadeleri çalıştırmak için gereklidir.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • amc

    amc

    21 EYLÜL 2005
  • beautyexchange

    beautyexchan

    4 EYLÜL 2006
  • WOSU Public Media

    WOSU Public

    23 AĞUSTOS 2007