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

Chèn DML với biến ràng buộc:Sử dụng điều khoản của câu lệnh thực thi ngay lập tức

Chèn DML với biến ràng buộc:Tại sao?

Hãy bắt đầu cuộc rượt đuổi! Hai ưu điểm lớn nhất của các biến liên kết là bảo mật chống lại việc tiêm SQL và nâng cao hiệu suất bằng cách giảm phân tích cú pháp cứng. Do những ưu điểm này, việc sử dụng các biến liên kết trong mã của bạn không chỉ được đề xuất mà còn được khuyến nghị.

Sẽ không phải là một sự đóng băng nếu chúng ta có thể tìm ra cách để sử dụng Biến liên kết với SQL động gốc? Nếu bạn đang tự hỏi như vậy thì các bạn thân mến của tôi, bạn đang ở đúng nơi khi chúng tôi sẽ làm chính xác điều đó trong blog này.

Biến liên kết là gì?

Chúng ta có thể xác định biến ràng buộc là biến mà chúng ta tạo trong SQL * Plus và sau đó tham chiếu trong PL / SQL. Hơn nữa, chúng ta có thể khai báo một biến Bind ở bất kỳ đâu trong môi trường máy chủ. Do đó, các biến liên kết còn được gọi là biến máy chủ.

Bạn có thể đọc thêm về các biến liên kết trong hướng dẫn PL / SQL 6 tại đây.

Cách sử dụng biến liên kết với SQL động gốc?

Để sử dụng biến ràng buộc trong SQL động, chúng ta cần thực hiện sự trợ giúp của “ Sử dụng mệnh đề ”Của câu lệnh Execute ngay lập tức.

Câu lệnh Sử dụng Điều khoản Thực thi Ngay lập tức này là gì?

Trong SQL tĩnh, chúng ta phải chỉ định giá trị cho biến liên kết sau khi thực thi chương trình PL / SQL. Trong khi trong SQL động, chúng ta phải đề cập trước các giá trị cho tất cả các biến liên kết. Các câu lệnh tương tự được sử dụng trong câu lệnh SQL mà chúng tôi muốn thực thi động bằng cách sử dụng Thực thi ngay lập tức.

Do đó, để chỉ định các giá trị cho tất cả các biến ràng buộc, chúng tôi sử dụng mệnh đề USING của Execute ngay Statement. Bằng cách áp dụng mệnh đề 'USING', chúng tôi liệt kê tất cả các giá trị cho mọi biến ràng buộc được sử dụng trong câu lệnh SQL mà chúng tôi muốn thực thi động.

Bây giờ chúng ta đã tìm hiểu biến ràng buộc là gì và câu lệnh Sử dụng mệnh đề thực thi ngay lập tức, chúng ta hãy làm một ví dụ.

Ví dụ về thực thi ngay với mệnh đề sử dụng

Đối với phần trình diễn, chúng tôi sẽ chèn dữ liệu vào một bảng. Và để làm điều đó, chúng tôi sẽ sử dụng câu lệnh Execute ngay lập tức. Ngoài ra, để tăng cường bảo mật và hiệu suất, chúng tôi sẽ sử dụng biến liên kết với Chèn DML.

Để làm được điều đó, trước tiên chúng ta cần một bảng để chúng ta có thể chèn dữ liệu vào. Do đó, hãy nhanh chóng tạo một cái. Và như mọi khi, tôi sẽ giữ mã càng đơn giản càng tốt để dễ hiểu về khái niệm này.

Bước 1:Tạo bảng

CREATE TABLE stu_info(
    student_name    VARCHAR2 (20)
);

Bước 2:Chuẩn bị tuyên bố DML

Đó là một thực tiễn lập trình tốt để chuẩn bị câu lệnh SQL của bạn, câu lệnh mà bạn muốn thực thi bằng cách sử dụng thực thi ngay lập tức, trước đó. Bằng cách này, bạn sẽ giảm nguy cơ mắc lỗi cú pháp.

Hạn chế đối với việc ghi DML cho Thực thi ngay lập tức sẽ vẫn giống như đối với câu lệnh DDL. Tương tự như câu lệnh DDL Câu lệnh DML không được kết thúc bằng dấu chấm phẩy. Do đó, hãy ghi nhớ điều đó, hãy viết câu lệnh INSERT.

INSERT INTO stu_info (student_name) VALUES (:stu_name)

Trong INSERT DML tiêu chuẩn, chúng ta thường ghi dữ liệu vào trong dấu ngoặc đơn của mệnh đề giá trị. Hơn nữa khi thực thi, dữ liệu này sẽ được chèn vào cột tương ứng. Nhưng như bạn thấy, ở đây chúng tôi đã sử dụng biến liên kết “:stu_name” thay vì mã hóa cứng bất kỳ giá trị cụ thể nào để chèn vào bảng.

Bước 3:Viết mã PL / SQL

Bước cuối cùng trong chu trình là chạy CHÈN DML với biến liên kết bằng cách áp dụng mệnh đề USING của Thực thi ngay lập tức câu lệnh của SQL động bản địa.

SET SERVEROUTPUT ON;
DECLARE
    sql_smt VARCHAR2 (150);
BEGIN
    sql_smt :=  'INSERT INTO stu_info (student_name) VALUES (:stu_name)';
    EXECUTE IMMEDIATE sql_smt USING 'Steve';
END;
/

Hãy hiểu điều gì sẽ xảy ra khi thực thi khối PL / SQL này. Khi bạn thực thi chương trình này, công cụ PL / SQL sẽ thay thế giá trị này là ‘Steve’ thay cho biến bind:stu_name và sau đó thực thi INSERT DML sẽ chèn giá trị này vào bảng được đề cập.

Hơn nữa, có một số điều bạn cần phải lưu ý khi viết chương trình PL / SQL ở trên khi kết thúc.

  1. Đảm bảo bao gồm INSERT DML hoặc Bất kỳ câu lệnh SQL nào mà bạn muốn chạy bằng Execute ngay lập tức thành một cặp dấu ngoặc kép. Ngoài ra, hãy nhớ kết thúc câu lệnh gán (dòng 5) cũng như câu lệnh Execute ngay lập tức của bạn bằng dấu chấm phẩy.
  2. Giá trị bạn đang gán cho biến liên kết của mình thông qua mệnh đề USING phải giống hoặc tương thích với kiểu dữ liệu của cột trong bảng mà bạn đang chèn nó vào. Ví dụ trong trường hợp của chúng tôi, chúng tôi đang chèn tên ‘Steve’ là một chuỗi ký tự vào cột student_name của bảng stu_info thuộc kiểu dữ liệu Varchar2. Kiểu dữ liệu ký tự rất tương thích với kiểu dữ liệu Varchar2.

Qua chương trình này, chúng tôi đã học được hai điều rất quan trọng.

  1. Cách sử dụng CHÈN DML với tính năng Thực thi ngay lập tức của SQL động và
  2. Cách áp dụng mệnh đề USING để gán giá trị cho biến liên kết được sử dụng trong truy vấn SQL mà chúng tôi muốn chạy động.

Ngoài ra, hãy nhớ kiểm tra video vì ở đó tôi đã thảo luận về cách xử lý với Lỗi “ORA-01008:Không phải tất cả các biến đều bị ràng buộc”. Tôi cá là bạn không muốn bỏ lỡ giải pháp cho lỗi này vì nó rất quan trọng từ quan điểm chứng nhận cơ sở dữ liệu oracle.

Ngoài ra, hãy chú ý theo dõi vì trong hướng dẫn tiếp theo, chúng ta sẽ học cách đối phó với nhiều biến ràng buộc bằng cách áp dụng Sử dụng mệnh đề thực thi ngay lập tức trong Cơ sở dữ liệu Oracle.

Hy vọng bạn đã học được điều gì đó có giá trị từ blog này. Trong khi đó, hãy chia sẻ nó với bạn bè của bạn trên Facebook, twitter, WhatsApp hoặc bất kỳ phương tiện nào bạn thấy thuận tiện. Ngoài ra, hãy đăng ký kênh YouTube của tôi để có thêm nhiều hướng dẫn nhanh và 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. Di chuyển dữ liệu

  2. Phân mảnh chỉ mục được nhóm không mong muốn

  3. Cách tạo dữ liệu thử nghiệm DB

  4. T-SQL Thứ Ba # 106:INSTEAD OF trigger

  5. Sử dụng cờ theo dõi 3226 để ngăn chặn ghi nhật ký sao lưu