Thứ Ba, 25 tháng 7, 2023

Tạo biến bằng lênh DECLARE trong SQL Server

Stored Procedure là tập hợp những lệnh SQL và những công thức tính toán nên đôi lúc ta cần phải tạo ra một biến để lưu trữ dữ liệu tạm thời, và cách làm như thế nào trong SQL Server thì trong bài này chúng ta sẽ tìm hiểu nhé.  Mình sẽ gọi biến là variable.

Mục lục

  • 1. Khai báo biến
  • 2. Gán giá trị cho biến
  • 3. Sử dụng biến 
  • 4. Lưu trữ câu truy vấn vào biến
  • 5. Gán giá vào biến ở lệnh SELECT
  • 6. Ví dụ tổng thể với Stored Procedure

1. Khai báo biến

Để khai báo biến thì bạn sử dụng từ khóa DECLARE với cú pháp như sau:

1
DECLARE @var_name data_type;

Trong đó:

  • @var_name là tên của biến, luôn luôn bắt đầu bằng ký tự @
  • data_type là kiểu dữ liệu của biến

Ví dụ: Khai báo biến model_year có kiểu dữ liệu là SMALLINT.

1
DECLARE @model_year AS SMALLINT;

Nếu bạn muốn khai báo nhiều biến cùng lúc thì sử dụng nhiều lệnh DECLARE, hoặc bạn viết nó cách nhau bởi dấu phẩy như sau:

1
2
DECLARE @model_year SMALLINT,
        @product_name VARCHAR(MAX);

Lưu ý: Mặc định khi bạn khai báo biến thì giá trị ban đầu của nó là NULL.

2. Gán giá trị cho biến

Trong SQL Server để gán giá trị thì bạn sử dụng từ khóa SET và toán tử = với cú pháp sau:

1
SET @var_name = value

Ví dụ: Gán giá trị 2018 cho biến @model_year

1
SET @model_year = 2018;

3. Sử dụng biến 

Việc sử dụng biến cũng như việc bạn sử dụng tham số của procedure vì bản chất cả hai đều biến, chỉ là tên gọi khác nhau mà thôi.

Giả sử mình cần lấy sản phẩm trong bảng products với năm sản xuất bằng với giá trị của biến @model_year thì sẽ viết như sau:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
DECLARE @model_year SMALLINT;
  
SET @model_year = 2018;
  
SELECT
    product_name,
    model_year,
    list_price
FROM
    production.products
WHERE
    model_year = @model_year
ORDER BY
    product_name;

Bạn có thể chạy tất cả lệnh SQL này mà không cần viết stored procedure vì mình chỉ giải thích phần biến cho bạn hiểu mà thôi.

Stored Procedure Variables execute a code block png

Kết quả sẽ nhận được như sau:

Stored Procedure Variables output png

Lưu ý: Việc tính toán thay đổi giá trị của biến bằng cách sử dụng các toán tử như +, -, *, / vẫn sử dụng bình thường.

4. Lưu trữ câu truy vấn vào biến

Nếu bạn muốn lưu một câu SQL vào biến để sau này muốn chạy thì chỉ cần chạy biến thì hãy thực hiện theo các bước sau:

Đầu tiên bạn hãy tạo một biến, giả sử mình đặt tên là @product_count, vì đếm số lượng nên cho kiểu INT.

1
DECLARE @product_count INT;

Tiếp theo sử dụng SET để lưu trữ câu SQL vào biến.

1
2
3
4
5
6
SET @product_count = (
    SELECT
        COUNT(*)
    FROM
        production.products
);

Cuối cùng muốn chạy câu truy vấn này thì chỉ cần viết như sau:

1
SELECT @product_count;

5. Gán giá vào biến ở lệnh SELECT

Nếu bạn muốn gán giá trị vào biến trong câu lệnh SELECT thì hãy thực hiện theo các bước như ví dụ dưới đây.

Đầu tiên tạo hai biến để lưu trữ product name và list price.

1
2
3
DECLARE
    @product_name VARCHAR(MAX),
    @list_price DECIMAL(10,2);

Tiếp theo sử dụng nó trong câu lệnh SELECT.

1
2
3
4
5
6
7
SELECT
    @product_name = product_name,
    @list_price = list_price
FROM
    production.products
WHERE
    product_id = 100;

Vậy là xong. Để xem giá trị của biến thì hãy chạy câu SQL sau.

1
2
3
SELECT
    @product_name AS product_name,
    @list_price AS list_price;

Hãy gom tất cả 3 câu SQL trên lại và chạy một lần nhé, sau đó xem kết quả thì sẽ thấy như hình dưới đây.

Stored Procedure Variables assign a record to a variable png

6. Ví dụ tổng thể với Stored Procedure

Hãy xem ví dụ dưới đây về cách sử dụng biến trong SQL Server nhé.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
CREATE  PROC uspGetProductList(
    @model_year SMALLINT
) AS
BEGIN
    DECLARE @product_list VARCHAR(MAX);
  
    SET @product_list = '';
  
    SELECT
        @product_list = @product_list + product_name
                        + CHAR(10)
    FROM
        production.products
    WHERE
        model_year = @model_year
    ORDER BY
        product_name;
  
    PRINT @product_list;
END;

Như vậy là mình đã giới thiệu xong biến và cách sử dụng biến trong SQL Server, đây là bài khá  quan trọng bởi hầu như khi làm việc với procedure, trigger, function bạn đều phải sử dụng biến rất thường xuyên.

=============================
* 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

=============================
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