Thứ Tư, 26 tháng 7, 2023

Biến (variable) trong MYSQL Stored Procedure

T-SQL cũng có thể coi nó như là một ngôn ngữ lập trình nên nó cũng tồn tại các khái niệm kiểu dữ liệu, biến và khai báo biến, các vòng lặp, câu ifelse,... Nhưng chúng ta rất ít sử dụng nó để viết các ứng dụng website. Nhưng bạn cũng không nên bỏ qua phần kiến thức bổ ích này nhé.

Trong bài này chúng ta sẽ tìm hiểu biến trong Procedure và cách khai báo, thiết lập giá trị cho biến trong Stored Procedure.

Mục lục

  • 1. Khai báo biến trong MySql Stored Procedure
  • 2. Gán giá trị cho biến trong MySql Stored Procedure
  • 4. Phạm vi hoạt động của biến
  • Lời kết:

1. Khai báo biến trong MySql Stored Procedure

Để định nghĩa một biến mới ta dùng cú pháp :

Bài viết này được đăng tại tranvanbinh.vn

1
DECLARE variable_name datatype(size) DEFAULT default_value

Trong đó:

  • DECLARE: là từ khóa tạo biến
  • variable_name là tên biến
  • datatype(size) là kiểu dữ liệu của biến và kích thước của nó
  • DEFAULT default_value: là gán giá trị mặc định cho biến

Ví dụ:

1
DECLARE product_title VARCHAR(255) DEFAULT 'No Name';

2. Gán giá trị cho biến trong MySql Stored Procedure

Tạo biến rồi thì phải gán giá trị cho nó chứ đúng không nào? Để gán giá trị cho nó thì chúng ta sử dụng tư khóa SET:

1
SET variable_name = 'value';

Ví dụ: Định nghĩa biến age và gán giá trị 20 cho nó.

1
2
3
DECLARE age INT(11) DEFAULT 0
 
SET age = 12

Ví dụ: Gán giá trị thông qua lệnh SELECT

1
2
3
4
DECLARE total_products INT DEFAULT 0
  
SELECT COUNT(*) INTO total_products
FROM products

Trong ví dụ này thì trước tiên nó sẽ thực hiện câu truy vấn SQL đếm tổng số record và sau đó gán vào biến total_products bằng lệnh (COUNT(*) INTO total_products).

4. Phạm vi hoạt động của biến

Nếu như bạn định nghĩa một biến bên trong phần thân của Procedure (giữa BEGIN và END) thì đó ta gọi là biến cục bộ của Procedure. Bạn có thể định nghĩa nhiều biến trong một Procedure.

Ví dụ:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
DELIMITER $$
DROP PROCEDURE IF EXISTS tinhTong $$
CREATE PROCEDURE tinhTong()
BEGIN
    DECLARE a INT (11) DEFAULT 0;
    DECLARE b INT (11) DEFAULT 0;
    DECLARE tong INT (11) DEFAULT 0;
     
    SET a = 200;
    SET b = 300;
    SET tong = a + b;
     
    SELECT tong;
     
END; $$
DELIMITER;

Ở procedure này tôi đã định nghĩa các biến a,b,tong và tính toán trên đó. Bạn chạy câu sql trên và sau đó gọi nó bằng lệnh call tinhTong thì nó sẽ cho kết quả là 500.

Nếu một biến được khai báo bên ngoài Procedure thì bên trong Procedure sẽ không nhận được và sẽ thông báo lỗi.

Ví dụ:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
DELIMITER $$
DECLARE tong INT (11) DEFAULT 0;
DROP PROCEDURE IF EXISTS tinhTong $$
CREATE PROCEDURE tinhTong()
BEGIN
    DECLARE a INT (11) DEFAULT 0;
    DECLARE b INT (11) DEFAULT 0;
         
    SET a = 200;
    SET b = 300;
    SET tong = a + b;
     
    SELECT tong;
     
END; $$
DELIMITER;

Chương trình này lỗi vì biến tong không tồn tại trong Procedure.

Lời kết:

Trong bài này chủ yếu chúng ta học cách định nghĩa một biến trong MYSQL như thế nào? Cách gán dữ liệu cho biến và thực thi kết quả câu truy vấn SQL rồi gán vào biến đó. Bài tương đối đơn giản nên rất dễ học, ở bài tiếp theo chúng ta sẽ tìm hiểu cách khai báo tham số truyền vào Procedure nhé.

=============================
* KHOÁ HỌC ORACLE DATABASE A-Z ENTERPRISE trực tiếp từ tôi giúp bạn bước đầu trở thành những chuyên gia DBA, đủ kinh nghiệm đi thi chứng chỉ OA/OCP, đặc biệt là rất nhiều kinh nghiệm, bí kíp thực chiến trên các hệ thống Core tại VN chỉ sau 1 khoá học.
* CÁCH ĐĂNG KÝ: Gõ (.) hoặc để lại số điện thoại hoặc inbox https://m.me/tranvanbinh.vn hoặc Hotline/Zalo 090.29.12.888
* Chi tiết tham khảo:
https://bit.ly/oaz_w
=============================
KẾT NỐI VỚI CHUYÊN GIA TRẦN VĂN BÌNH:
📧 Mail: binhoracle@gmail.com
☎️ Mobile/Zalo: 0902912888
👨 Facebook: https://www.facebook.com/BinhOracleMaster
👨 Inbox Messenger: https://m.me/101036604657441 (profile)
👨 Fanpage: https://www.facebook.com/tranvanbinh.vn
👨 Inbox Fanpage: https://m.me/tranvanbinh.vn
👨👩 Group FB: https://www.facebook.com/groups/DBAVietNam
👨 Website: https://www.tranvanbinh.vn
👨 Blogger: https://tranvanbinhmaster.blogspot.com
🎬 Youtube: https://www.youtube.com/@binhguru
👨 Tiktok: https://www.tiktok.com/@binhguru
👨 Linkin: https://www.linkedin.com/in/binhoracle
👨 Twitter: https://twitter.com/binhguru
👨 Podcast: https://www.podbean.com/pu/pbblog-eskre-5f82d6
👨 Địa chỉ: Tòa nhà Sun Square - 21 Lê Đức Thọ - Phường Mỹ Đình 1 - Quận Nam Từ Liêm - TP.Hà Nội

=============================
Biến (variable) trong MYSQL Stored Procedure, oracle tutorial, học oracle database, Tự học Oracle, Tài liệu Oracle 12c tiếng Việt, Hướng dẫn sử dụng Oracle Database, Oracle SQL cơ bản, Oracle SQL là gì, Khóa học Oracle Hà Nội, Học chứng chỉ Oracle ở đầu, Khóa học Oracle online,sql tutorial, khóa học pl/sql tutorial, học dba, học dba ở việt nam, khóa học dba, khóa học dba sql, tài liệu học dba oracle, Khóa học Oracle online, học oracle sql, học oracle ở đâu tphcm, học oracle bắt đầu từ đâu, học oracle ở hà nội, oracle database tutorial, oracle database 12c, oracle database là gì, oracle database 11g, oracle download, oracle database 19c, oracle dba tutorial, oracle tunning, sql tunning , oracle 12c, oracle multitenant, Container Databases (CDB), Pluggable Databases (PDB), oracle cloud, oracle security, oracle fga, audit_trail,oracle RAC, ASM, oracle dataguard, oracle goldengate, mview, oracle exadata, oracle oca, oracle ocp, oracle ocm , oracle weblogic, postgresql tutorial, mysql tutorial, mariadb tutorial, ms sql server tutorial, nosql, mongodb tutorial, oci, cloud, middleware tutorial, hoc solaris tutorial, hoc linux tutorial, hoc aix tutorial, unix tutorial, securecrt, xshell, mobaxterm, putty

ĐỌC NHIỀU

Trần Văn Bình - Oracle Database Master