Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Cách chạy Tạo bảng DDL với THỰC HIỆN NGAY LẬP TỨC trong cơ sở dữ liệu Oracle

Tạo DDL Bảng với Thực thi ngay lập tức

Chắc hẳn bạn đang nghĩ rằng điều gì có thể xảy ra khi thực thi DDL TẠO BẢNG? Đúng vậy, không có vấn đề gì miễn là bạn đang thực thi chúng bằng SQL. Nhưng khi nói đến việc thực thi chúng với PL / SQL thì thật khó khăn.

Vậy trước tiên, các câu lệnh DDL trong Cơ sở dữ liệu Oracle là gì?

DDL là viết tắt của Ngôn ngữ Định nghĩa Dữ liệu. Sử dụng các câu lệnh DDL, chúng ta có thể tạo hoặc sửa đổi các đối tượng cơ sở dữ liệu cũng như các lược đồ. Các câu lệnh này là:

  • TẠO,
  • DROP và
  • ALTER.

Luôn luôn là một thực tiễn tốt để bố trí các lược đồ và đối tượng của bạn trước và tạo chúng trong giai đoạn đầu của dự án. Nếu có thể thì chúng ta nên thực hiện công việc này bằng cách sử dụng SQL. Điều đó có thể nhanh hơn và sạch hơn nhiều. Nhưng đôi khi không phải lúc nào cũng có thể, trong trường hợp đó, chúng tôi có thể nhờ đến sự trợ giúp của các tính năng như Native Dynamic SQL trong Cơ sở dữ liệu Oracle.

Native Dynamic SQL cho phép chúng tôi thực thi các câu lệnh SQL như DDL hoặc DML ngay thông qua PL / SQL của chúng tôi.

Tại sao chúng ta không thể thực thi DDL thông qua chương trình PL / SQL?

Nếu bạn vẫn đang tự hỏi liệu việc thực thi câu lệnh DDL với PL / SQL có phức tạp đến mức đó hay không, thì hãy thử tạo một bảng thông qua chương trình PL / SQL.

SET SERVEROUTPUT ON;
BEGIN 
    CREATE TABLE tut_82 (
    tut_num NUMBER(3),
    tut_name   VARCHAR2 (50));  
END;
/

Tôi biết cách tiếp cận này sẽ là suy nghĩ đầu tiên của bạn nếu tôi yêu cầu bạn tạo một bảng thông qua chương trình PL / SQL. Ý tôi là, cái này trông hoàn hảo, điều gì có thể xảy ra?

Không có gì sai với chương trình này, vấn đề duy nhất ở đây là PL / SQL không hỗ trợ trực tiếp các câu lệnh DDL. Để thực thi một câu lệnh DDL bằng PL / SQL, chúng ta cần sử dụng gói DBMS_SQL hoặc cách nâng cao và cải tiến của NATIVE DYNAMIC SQL.

Bạn có thể kiểm tra điều này cho chính mình. Tiếp tục và thực hiện chương trình trên. Khi thực thi, bạn sẽ gặp lỗi trông giống như được hiển thị trong hình dưới đây.

Vì vậy, cách thích hợp để thực thi một chương trình DDL thông qua PL / SQL là gì?

Bạn có thể thực thi một chương trình DDL thông qua PL / SQL bằng cách sử dụng gói DBMS_SQL hoặc bằng cách sử dụng câu lệnh Thực thi ngay lập tức của SQL động bản địa. Tùy chọn thứ hai là tùy chọn được sử dụng nhiều nhất, đặc biệt là bây giờ một ngày vì hiệu suất tốt hơn và cú pháp dễ học.

Làm thế nào để thực thi TẠO BẢNG DDL bằng Thực thi ngay trong Cơ sở dữ liệu Oracle?

Bước 1:Chuẩn bị trước DDL của bạn.

Mặc dù điều đó là không cần thiết, nhưng tôi khuyên bạn nên chuẩn bị trước DDL của mình, bằng cách đó ít nhất bạn có thể loại bỏ khả năng mắc lỗi cú pháp do cú pháp của câu lệnh DDL của bạn.

Trong trường hợp của chúng tôi, chúng tôi muốn thực thi DDL TẠO BẢNG, vì vậy trước tiên hãy viết một DDL để tạo bảng.

CREATE TABLE tut_82 (
    tut_num    NUMBER (3),
    tut_name   VARCHAR2 (50)
) 

Câu lệnh DDL này sẽ tạo một bảng với tên tut_82 với hai cột tut_num của kiểu dữ liệu NUMBER và tut_name của kiểu dữ liệu VARCHAR2.

Lưu ý ở đây, đừng kết thúc câu lệnh SQL của bạn (câu lệnh mà bạn muốn chạy với THỰC HIỆN NGAY LẬP TỨC) bằng dấu chấm phẩy.

Bước 2:Chạy chương trình DDL của bạn thông qua PL / SQL bằng Execute ngay lập tức.

Khi bạn đã chuẩn bị xong DDL, tiếp theo, bạn phải viết chương trình PL / SQL của mình.

SET SERVEROUTPUT ON;
DECLARE
    ddl_qry     VARCHAR2 (150);
BEGIN
    ddl_qry := 'CREATE TABLE tut_82(
                tut_num     NUMBER(3),
                tut_name    VARCHAR2(50)
                )';
    EXECUTE IMMEDIATE ddl_qry;
END;
/

Trong khối PL / SQL ở trên, chúng ta đã khai báo một biến với tên ddl_qry. Chúng tôi đã sử dụng biến này để giữ câu lệnh DDL mà chúng tôi đã chuẩn bị ở bước 1.

Thông tin:
Một điều mà bạn phải đảm bảo ở đây là, biến mà bạn sẽ sử dụng để giữ câu lệnh SQL mà bạn muốn chạy với câu lệnh EXECUTE IMMEDIATE của mình phải luôn thuộc kiểu dữ liệu VARCHAR2 > và có nhiều độ rộng dữ liệu để DDL của bạn có thể dễ dàng phù hợp với nó.

Trong phần thực thi của khối PL / SQL này, chúng ta có hai câu lệnh thực thi. Các câu lệnh này là:

Tuyên bố 1:Tuyên bố nhiệm vụ

Trong câu lệnh đầu tiên, chúng tôi đã lưu trữ Tạo bảng DDL vào biến ddl_qry bằng cách sử dụng toán tử gán (Trong PL / SQL, toán tử gán là sự kết hợp của dấu hai chấm và dấu bằng).

Tuyên bố 2:Tuyên bố Mighty Execute ngay lập tức

Câu lệnh thứ hai là Câu lệnh thực thi. Để thực thi động một DDL, trước tiên bạn phải viết cụm từ dành riêng 'Thực thi ngay lập tức', theo sau là tên biến mà bạn đã lưu trữ DDL của mình như chúng tôi đã làm ở trên.

Nếu muốn, bạn cũng có thể viết DDL của mình ngay sau cụm từ 'Cụm từ dành riêng'. Nó hoàn toàn là một sự lựa chọn cá nhân. Tôi thích sử dụng cách tiếp cận trước đây trong đó chúng tôi sử dụng Biến để giữ DDL vì trước hết, nó làm cho mã của bạn trông gọn gàng và sạch sẽ hơn nữa nó cũng làm cho việc truy tìm lỗi dễ dàng hơn rất nhiều.

Nhưng Manish, tôi cũng muốn tìm hiểu cách viết khác của câu lệnh DDL.

Chắc chắn, không có gì sai khi học một điều gì đó mới.

BEGIN
    EXECUTE IMMEDIATE 'CREATE TABLE tut_82(
                	tut_num     NUMBER(3),
                	tut_name    VARCHAR2(50)
                )';
END;
/

Cách tiếp cận thay thế cho đoạn mã trên là viết câu lệnh DDL ngay trong câu lệnh Execute ngay lập tức của bạn. Đối với điều này, trước tiên bạn chỉ cần viết cụm từ dành riêng Execute Im ngay sau đó là câu lệnh DDL mà bạn muốn thực thi động.

Theo một trong hai cách, bạn chỉ cần thực hiện một số việc trong khi viết DDL để Thực thi ngay lập tức.

Đầu tiên:Luôn đặt câu lệnh SQL của bạn thành một cặp Dấu ngoặc kép

Luôn nhớ rằng Thực thi ngay xử lý DDL hoặc DML hoặc bất kỳ câu lệnh SQL nào được hỗ trợ khác mà bạn muốn thực thi động dưới dạng chuỗi kiểu dữ liệu VARCHAR2 và trong PL / SQL, chúng tôi đặt bất kỳ ký tự hoặc chuỗi VARCHAR2 nào vào một cặp dấu ngoặc kép. Vì vậy, hãy luôn đảm bảo bao gồm câu lệnh SQL mà bạn muốn chạy bằng Execute ngay lập tức thành một cặp dấu nháy đơn.

Thứ hai:Quan tâm đến Dấu chấm phẩy.

Trong trường hợp bạn đang viết câu lệnh SQL để Thực thi ngay thì bạn phải đặt dấu chấm phẩy (;) ngay bên ngoài các dấu nháy đơn mà bạn đã kèm theo câu lệnh SQL của mình. Mặt khác, nếu bạn đang viết một khối PL / SQL để thực thi động bằng Execute ngay lập tức thì bạn phải đặt dấu chấm phẩy ở cuối khối PL / SQL của mình ngay trước dấu nháy đơn đóng cũng như ngay bên ngoài dấu nháy đơn đóng.

Đó là hướng dẫn chi tiết về cách chạy câu lệnh Create Table DDL bằng cách sử dụng câu lệnh EXECUTE NGAY LẬP TỨC của Native Dynamic SQL trong Oracle Database. Hy vọng bạn sẽ thích nó và học được điều gì đó mới.

Hãy đảm bảo Đăng ký kênh YouTube của tôi vì trong hướng dẫn tiếp theo, chúng ta sẽ tìm hiểu điều gì đó mới và thú vị về Dynamic SQL. Bạn cũng có thể theo dõi tôi trên Twitter và Facebook của tôi.

Cảm ơn và chúc một ngày tốt lành!


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle:Kết hợp nhiều kết quả trong một truy vấn con thành một giá trị được phân tách bằng dấu phẩy

  2. Khắc phục "Không thể mở ứng dụng" SQLDeveloper.app "."

  3. Khóa cơ sở dữ liệu oracle trước khi chạy các tập lệnh Xóa / Tải dữ liệu

  4. Thu thập hàng loạt PL / SQL với mệnh đề LIMIT trong Cơ sở dữ liệu Oracle

  5. Kiểm tra bảng tồn tại hay không trước khi tạo nó trong Oracle