ทำไม SQL * PLUS ถึงต้องการสแลชหลังจากสร้าง CREATE TYPE


14

ฉันเพิ่งมีปัญหาที่ฉันกำหนดประเภทและทดสอบในคางคกและทั้งหมดก็โอเค แต่ทำงานภายใต้ SQL * PLUS มันเกิดข้อผิดพลาด

ตัวอย่าง:

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

ด้วยเหตุผลบางอย่างฉันต้องเพิ่มเครื่องหมายทับที่นี่

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

สำหรับฉันแล้วมันคล้ายกับคำสั่งสร้างตารางซึ่งไม่ต้องใช้เครื่องหมายทับ ฉันคิดว่ามันค่อนข้างสับสน ฉันรู้ว่ามันทำงานอย่างไร แต่ทุกคนสามารถอธิบายได้ว่าทำไมการตัดสินใจออกแบบนี้จึงเกิดขึ้น



2
ไม่มีคำถามทำไมไม่มีคำตอบ ดูเหมือนว่าเป็นการตัดสินใจตามอำเภอใจของทีม sql * plus
bernd_k

มีคำตอบที่ดีคือ: stackoverflow.com/a/10207695/1568658
Eric Wang

คำตอบ:


15

คุณต้องการ a /หลังจากบล็อก PL / SQL ใน SQL * Plus:

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

PL/SQL procedure successfully completed

นี่คือเพื่อให้ SQL * Plus รู้ว่าคุณทำอะไรกับคำสั่งของคุณ (ซึ่งอาจรวมถึงสื่อกลาง, ไม่สิ้นสุด;)

ประเภท SQL อาจรวมถึงรหัส PL / SQL ดังนั้นผู้พัฒนา SQL * Plus จึงตัดสินใจว่าคุณจำเป็นต้องมี/ทุกกรณีหลังจาก CREATE TYPE:

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

หมายเหตุ : คุณต้องมี/หลังจากคุณกำหนดโพรซีเดอร์แพ็กเกจหรือเนื้อหาแพ็กเกจ (ด้วยเหตุผลเดียวกัน)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.