Tại sao SQL * PLUS cần một dấu gạch chéo sau khi TẠO LOẠI?


14

Tôi chỉ gặp vấn đề là tôi đã xác định Loại và kiểm tra nó trong TOAD và tất cả đều ổn. Nhưng chạy theo SQL * PLUS, nó đã gây ra lỗi.

Thí dụ:

CREATE OR REPLACE TYPE MyType AS OBJECT (
    Item1 NUMBER,
    Item2 NUMBER
);

Vì một số lý do, tôi phải thêm một dấu gạch chéo ở đây

CREATE OR REPLACE TYPE MyType AS OBJECT (
    Item1 NUMBER,
    Item2 NUMBER
);
/

Đối với tôi, nó trông tương tự như một câu lệnh Tạo bảng, không yêu cầu dấu gạch chéo. Tôi thấy nó khá khó hiểu. Tôi biết làm thế nào nó hoạt động, nhưng bất cứ ai có thể giải thích tại sao quyết định thiết kế này được đưa ra?



2
Không có câu hỏi Tại sao không được trả lời ở đó. Nó dường như là một quyết định thiết kế tùy ý của nhóm sql * plus.
bernd_k

Có một câu trả lời tuyệt vời: stackoverflow.com/a/10207695/1568658
Eric Wang

Câu trả lời:


15

bạn cần một /khối PL / SQL sau SQL * Plus:

SQL> begin
  2     null;
  3  end;
  4  -- here you need a /
  5  /

PL/SQL procedure successfully completed

Điều này là để SQL * Plus biết rằng bạn đã hoàn thành câu lệnh của mình (có thể bao gồm trung gian, không kết thúc ;).

Các loại SQL có thể bao gồm mã PL / SQL, do đó, các nhà phát triển SQL * Plus đã quyết định rằng bạn cần một /trong tất cả các trường hợp sau khi TẠO LOẠI:

SQL> CREATE OR REPLACE TYPE t AS OBJECT (
  2     x NUMBER,
  3     MEMBER PROCEDURE setx(p_x NUMBER)
  4  );
  5  /

Type created

SQL> CREATE OR REPLACE TYPE BODY t AS
  2     MEMBER PROCEDURE setx (p_x NUMBER) IS
  3     BEGIN
  4        x := p_x;
  5     END;
  6  END;
  7  /

Type body created

Lưu ý : bạn cũng cần /sau khi bạn xác định một thủ tục, gói hoặc thân gói (vì lý do tương tự).

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.