Chúng tôi đã có một số cuộc tranh luận trong tuần này tại công ty của tôi về cách chúng tôi nên viết các tập lệnh SQL của chúng tôi.
Bối cảnh: Cơ sở dữ liệu của chúng tôi là Oracle 10g (sớm nâng cấp lên 11). Nhóm DBA của chúng tôi sử dụng SQLPlus để triển khai các tập lệnh của chúng tôi để sản xuất.
Bây giờ, chúng tôi đã có một triển khai gần đây đã thất bại vì nó đã sử dụng cả dấu chấm phẩy và dấu gạch chéo ( /
). Dấu chấm phẩy nằm ở cuối mỗi câu và dấu gạch chéo nằm giữa các câu.
alter table foo.bar drop constraint bar1;
/
alter table foo.can drop constraint can1;
/
Có một số kích hoạt được thêm vào sau trong tập lệnh, một số khung nhìn được tạo cũng như một số thủ tục được lưu trữ. Có cả hai ;
và /
khiến cho mỗi câu lệnh chạy hai lần gây ra lỗi (đặc biệt là trên các phần chèn, cần phải là duy nhất).
Trong SQL Developer, điều này không xảy ra, trong TOAD, điều này không xảy ra. Nếu bạn chạy một số lệnh nhất định, chúng sẽ không hoạt động nếu không có /
chúng.
Trong PL / SQL nếu bạn có chương trình con (DECLARE, BEGIN, END) thì dấu chấm phẩy được sử dụng sẽ được coi là một phần của chương trình con, do đó bạn phải sử dụng dấu gạch chéo.
Vì vậy, câu hỏi của tôi là: Nếu cơ sở dữ liệu của bạn là Oracle, cách viết kịch bản SQL của bạn là gì? Vì bạn biết rằng DB của bạn là Oracle nên bạn luôn sử dụng /
?
sqlterminator
thành !
nếu bạn muốn) và quy ước này có xu hướng được theo sau bởi các công cụ khác. Tuy nhiên, ngôn ngữ PL / SQL sử dụng dấu chấm phẩy làm thành phần cú pháp bắt buộc.