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

Cách sử dụng thực thi ngay lập tức với mệnh đề INTO trong cơ sở dữ liệu Oracle

Thực thi ngay lập tức với mệnh đề INTO

SQL động hoặc NDS gốc đang trợ giúp các nhà phát triển bằng cách cung cấp tính linh hoạt, cải thiện hiệu suất và đơn giản hóa các cú pháp lập trình. Hôm nay trong hướng dẫn này, chúng ta sẽ tìm hiểu cách viết một truy vấn SQL động trong Cơ sở dữ liệu Oracle bằng cách sử dụng Câu lệnh thực thi ngay lập tức.

Vậy một Câu lệnh Thực thi Ngay lập tức trong Cơ sở dữ liệu Oracle là gì?

Sử dụng Execute ngay lập tức, chúng tôi có thể phân tích cú pháp và thực thi bất kỳ câu lệnh SQL nào hoặc một khối PL / SQL động trong Cơ sở dữ liệu Oracle. Và ý tôi là động trong thời gian chạy.

Thực thi ngay lập tức chỉ lấy một đối số. Nó có thể là một câu lệnh SQL hoặc một khối PL / SQL. Trình biên dịch coi các đối số của câu lệnh Thực thi ngay là chuỗi kiểu dữ liệu VARCHAR2. Do đó, hãy đảm bảo đặt truy vấn SQL hoặc khối PL / SQL của bạn vào cặp dấu nháy đơn (‘’).

Chúng ta có thể sử dụng bất kỳ câu lệnh SQL nào với Execute ngay lập tức không?

Bất kỳ câu lệnh SQL hoặc khối PL / SQL nào trả về một hàng kết quả đều có thể được sử dụng với Execute ngay lập tức. Hơn nữa, nếu câu lệnh của bạn trả về nhiều hơn một hàng kết quả thì có nhiều cách khác. Ngoài ra, những điều này chúng ta sẽ thảo luận trong các bài hướng dẫn trong tương lai.

Cú pháp của Execute Instant Statement là gì?

Cú pháp của lệnh Execute ngay lập tức khá đơn giản. Hãy cùng xem qua.

EXECUTE IMMEDIATE dynamic_query
[INTO user_defined_variable-1, user_defined_variable-2…]
[USING bind_argument-1, bind_argument-2…]
[RETURNING|RETURN-INTO clause];  

Ở đâu:

Thực thi ngay lập tức :Execute Ngay lập tức là một cụm từ dành riêng.

Dynamic_query :Tiếp theo là cụm từ dành riêng, chúng ta phải viết truy vấn động của mình. Truy vấn này có thể là một câu lệnh SQL hoặc một khối PL / SQL. Hơn nữa, trình biên dịch coi truy vấn động như một chuỗi kiểu dữ liệu VARCHAR2. Do đó, bạn phải đảm bảo rằng bạn đặt truy vấn của mình thành một cặp dấu ngoặc kép.

Điều khoản INTO :Sử dụng mệnh đề INTO, chúng tôi chỉ định danh sách các biến do người dùng xác định. Ngoài ra, chúng sẽ giữ các giá trị được trả về bởi câu lệnh SELECT động. Nó rất giống với câu lệnh SELECT-INTO. Ngoài ra, nó là một điều khoản tùy chọn, vì vậy nếu bạn không yêu cầu thì bạn có thể bỏ qua nó.

Điều khoản sử dụng :Trong trường hợp bạn đã sử dụng một biến liên kết trong truy vấn động của mình thì mệnh đề này sẽ cho phép bạn chỉ định các giá trị cho biến liên kết đó. Những thứ này sẽ được thay thế tương ứng trong thời gian chạy. Một lần nữa, nó là một điều khoản Tùy chọn.

QUAY LẠI hoặc QUAY LẠI VÀO mệnh đề:mệnh đề Return into đối lập với mệnh đề SỬ DỤNG. Trong khi khi sử dụng mệnh đề, chúng tôi cung cấp các giá trị cho truy vấn động ở đây trong mệnh đề RETURNING INTO, chúng tôi nhận được các giá trị được trả về bởi truy vấn động. Và lưu trữ chúng vào danh sách các đối số ràng buộc được chỉ định. Một lần nữa, nó là một Điều khoản tùy chọn.

Bạn cũng có thể xem phần giải thích chi tiết về cú pháp trên trong video tương ứng tại đây.

Ví dụ về câu lệnh Thực thi ngay lập tức.

Thực hiện một trình diễn thực thi ngay lập tức bằng cách sử dụng tất cả các mệnh đề được đề cập ở trên sẽ làm tăng độ phức tạp và làm cho ví dụ khó hiểu. Điều này hoàn toàn ngược lại với những gì chúng tôi muốn.

Do đó, để giữ cho khái niệm đơn giản và dễ học, chúng ta sẽ làm ví dụ về Execute ngay lập tức bằng cách sử dụng mệnh đề đầu tiên là INTO.

Thực hiện ngay với mệnh đề INTO.

SET SERVEROUTPUT ON;
DECLARE
    sql_qry     VARCHAR2 (150);
    emp_tot     NUMBER(3);
BEGIN
    
    sql_qry:= ‘SELECT count (*) FROM employees';
    EXECUTE IMMEDIATE sql_qry INTO emp_tot;
    DBMS_OUTPUT.PUT_LINE ('Total employees are: '||emp_tot);

END;
/

Dưới đây là một ví dụ rất đơn giản minh họa cách sử dụng thực thi ngay lập tức với INTO trong Cơ sở dữ liệu Oracle. Hãy xem những gì chúng tôi đã làm ở đây.

Phần khai báo

Trong phần khai báo chúng ta đã khai báo hai biến. Biến đầu tiên là sql_qry kiểu VARCHAR 2. Chúng tôi sẽ sử dụng biến này để lưu trữ câu lệnh SELECT mà chúng tôi muốn thực thi với câu lệnh EXECUTE IMMEDIATE của chúng tôi. Vì biến này sẽ chứa một câu lệnh DML nên chúng tôi phải đảm bảo rằng nó có đủ độ rộng dữ liệu.

Biến thứ hai là biến emp_tot do người dùng xác định. Chúng tôi sẽ sử dụng biến này với mệnh đề INTO để giữ dữ liệu được trả về bởi câu lệnh SELECT của chúng tôi.

Phần Thực thi

Trong phần này chúng tôi chỉ có ba câu lệnh. Đây là:

Tuyên bố 1 :

Trong câu lệnh đầu tiên, chúng tôi đang gán một truy vấn SQL hợp lệ cho biến sql_qry.

Tuyên bố 2 :

Câu lệnh thứ hai là câu lệnh THỰC HIỆN NGAY LẬP TỨC - VÀO. Trong câu lệnh này ngay sau khi viết cụm từ dành riêng, thực thi ngay lập tức chúng ta viết tên của biến sql_qry. Cùng một biến mà chúng tôi lưu trữ câu lệnh SELECT.

Khi thực thi, công cụ thời gian chạy sẽ thay thế biến này bằng nội dung mà nó đang giữ, trong trường hợp của chúng ta là một câu lệnh SELECT. Nếu không có lỗi thì công cụ thời gian chạy sẽ thực hiện câu lệnh SELECT bên dưới. Sau đó trả về kết quả nếu có.

Trong khi đó, câu lệnh SELECT của chúng ta sẽ trả về một giá trị là tổng số hàng của bảng nhân viên. Sử dụng mệnh đề INTO của câu lệnh EXECUTE IMMEDIATE, chúng tôi sẽ lưu trữ giá trị trả về đó vào biến emp_tot.

Tuyên bố 3 :

Câu lệnh thứ ba là một câu lệnh đầu ra sử dụng mà chúng tôi đang hiển thị giá trị của biến emp_tot trở lại người dùng.

Thông tin:
Trong trường hợp giao dịch DML, yêu cầu cam kết rõ ràng vì Thực thi ngay lập tức sẽ không tự động thực hiện giao dịch DML.

Một cách khác để viết phần thực thi này là:

BEGIN
    EXECUTE IMMEDIATE 'SELECT count (*) FROM employees' INTO emp_tot;
    DBMS_OUTPUT.PUT_LINE ('Total employees are: '||emp_tot); 
END;
/

Nếu muốn, bạn có thể bỏ qua hoàn toàn câu lệnh đầu tiên. Chỉ cần viết truy vấn SQL trực tiếp sau cụm từ dành riêng THỰC HIỆN NGAY LẬP TỨC.

Vui lòng xem video trên kênh YouTube của tôi để tìm hiểu cách thích hợp để viết truy vấn cho Thực thi ngay lập tức.

Các bạn nghĩ gì?

Cá nhân tôi thích cách trước đây mà chúng tôi sử dụng biến để lưu trữ truy vấn. Và sau đó đã sử dụng biến đó với Execute ngay lập tức. Bởi vì điều đó làm cho mã của chúng tôi trông gọn gàng và sạch sẽ. Hơn nữa, nó giúp chúng tôi theo dõi truy vấn của mình đề phòng nếu chúng tôi muốn thay đổi hoặc sửa đổi nó.

các bạn nghĩ sao? Bạn thích cách viết Execute Ngay lập tức nào nhất? Cái trước hoặc cái sau. Cho tôi biết ý kiến ​​của bạn trên trang Facebook của tôi hoặc trên Twitter của tôi.

Nếu bạn thấy việc học thông qua việc xem video rất tiện lợi thì bạn có thể xem video trên kênh YouTube của tôi. Và tìm hiểu về mệnh đề Thực thi ngay với INTO.

Cho đến nay trong hướng dẫn này, chúng ta đã tìm hiểu Câu lệnh thực thi tức thì là gì và cách sử dụng câu lệnh tương tự để thực hiện động truy vấn SQL bằng mệnh đề INTO trong Cơ sở dữ liệu Oracle. Tôi nghĩ vậy là đủ cho hướng dẫn này. Hãy giữ cho nó đơn giản bằng cách không kéo dài nó ra.

Hãy nhớ Đăng ký kênh YouTube của tôi để biết thêm các hướng dẫn thú vị.

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. Khắc phục "Không thể mở ứng dụng" SQLDeveloper.app "."

  2. Liên kết lại cơ sở hạ tầng lưới

  3. Giải pháp cho ORA-00997:sử dụng bất hợp pháp kiểu dữ liệu LONG

  4. Làm cách nào để xuất kết quả truy vấn sang csv trong Oracle SQL Developer?

  5. pivot table Oracle - cách thay đổi các mục hàng thành cột