1. Trang chủ
  2. » Công Nghệ Thông Tin

SQL server 2000 biến cục bộ

9 360 1

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 9
Dung lượng 131 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

1/- Khai báo biến cục bộ : Khai báo biến cục bộ là việc chỉ định cho hệ thống máy tính cấp phát một vùng nhớ bên trong bộ nhớ RAM random access memory của máy tính để chương trình có thể

Trang 1

SQL Server 2000 : Biến cục bộ

Giống như ngôn ngữ lập trình khác, việc sử dụng các biến cục

bộ trong chương trình là điều tất yếu phải có bên trong các ứng dụng Nếu không có biến thì các ngôn ngữ lập trình sẽ trở nên không hiệu quả, Transaction-SQL cũng không loại trừ yếu tố này.

Biến trong chương trình dùng để lưu trữ các giá trị tạm thời trong quá trình tính toán các

xử lý bởi vì sau khi thoát khỏi chương trình hoặc tắt máy tính thì giá trị của các biến này

sẽ khôngc òn trong bộ nhớ nữa

Thông thường mỗi một biến dùng để lưu trữ duy nhất một loại dữ liệu Do đó khi một biến đã xác định để lưu trữ dữ liệu dạng ngày thì bạn không thể ép buộc biến lưu trữ các

dữ liệu dạng khác như là số hoặc chuỗi Mỗi biến cần phải có một tên biến rõ ràng và duy nhất trong một phạm vi để khi cần tham chiếu, bạn sẽ chỉ định đến tên của biến đó Trong Transaction-SQL có hai loại biến khác nhau : biến cục bộ và biến hệ thống

Khác với các ngôn ngữ lập trình, Microsoft SQL Server không có khái niệm về biến toàn cục

1/- Khai báo biến cục bộ :

Khai báo biến cục bộ là việc chỉ định cho hệ thống máy tính cấp phát một vùng nhớ bên trong bộ nhớ RAM (random access memory) của máy tính để chương trình có thể lưu trữ các giá trị tạm thời trong quá trình tính toán

Trong Transaction-SQL việc sử dụng biến cần phải được khai báo tường minh rõ ràng, có nghĩa là bắt buộc bạn cần phải khai báo biến cục bộ trước rồi sau đó mới được phép sử dụng Điều này sẽ giúp cho bạn hiểu rõ về việc khai báo và sử dụng các biến bên trong chương trình của mình

Để khai báo biến cục bộ trong Transaction-SQL, bạn sử dụng lệnh DECLARE với cú

pháp như sau :

Cú pháp :

Trong đó :

Trang 2

• Tên biến : tên của biến được khai báo, tên biến luôn luôn bắt đầu bằng ký tự @ Thông

thường tên biến phải duy nhất trong một phạm vi hoạt động

• Kiểu dữ liệu : là các kiểu dữ liệu cơ bản của Microsoft SQL Server hoặc các kiểu dữ

liệu do người dùng định nghĩa, dùng để chỉ định loại dữ liệu mà biến sẽ lưu trữ Các kiểu

dữ liệu text, ntext hoặc image không được chấp nhận trong việc khai báo biến

Ví dụ :

Để khai báo các biến dùng để lưu trữ giá trị tổng số lượng đặt hàng, họ tên nhà cung cấp,

ngày xuất hàng, bạn sử dụng lệnh DECLARE như sau :

Khác với một vài ngôn ngữ lập trình, bạn không thể gán giá trị khởi tạo cho biến lúc khai báo chúng Do đó, hành động kế tiếp là gán giá trị cần lưu trữ vào bên trong biến

2/- Gán giá trị cho biến :

Để gán trị cần lưu trữ vào các biến, bạng sử dụng lệnh SET hoặc lệnh SELECT cùng với phép gán (=) Thông thường lệnh SET chỉ để gán các giá trị cụ thể hoặc các biểu thức

tính toán hoặc giá trị tính toán từ các biến khác

Ví dụ :

Để gán giá trị là ngày 25/03/2002 vào biến ngày xuất hàng đã được khai báo theo ví dụ

trên, bạn sử dụng lệnh SET như sau :

Lưu ý :

Đối với kiểu dữ liệu dạng ngày trong Microsoft SQL Server thông thường bạn sử dụng theo định dạng yyyy-mm-dd để gán giá trị vào biến hoặc vào trong cơ sở dữ liệu

Ngược lại với lệnh SET, lệnh SELECT dùng để gán các giá trị được lấy ra hoặc tính

toán từ dữ liệu của các cột bên trong các bảng dữ liệu Ngoài ra trong cùng một lệnh

SELECT cho phép cùng lúc đồng thời bạn có thể gán các giá trị khác nhau từ các cột dữ

liệu vào bên trong các biến khác nhau

Ví dụ :

Trang 3

Để tính ra tồng số lượng đặt hàng mà dữ liệu của nó được lấy từ cột SLDAT (số lượng

đặt) trong bảng CTDONDH, bạn sử dụng lệnh SELECT như sau :

Ví dụ :

Để tính ra đồng thời giá trị số lượng đặt hàng thấp nhất và cao nhất, bạn chỉ cần sử dụng

duy nhất một lệnh SELECT như sau :

Cẩn thận khi sử dụng câu lệnh SELECT để gán giá trị cần lưu trữ vào các biến bởi vì trong trường hợp nếu câu lệnh SELECT trả về nhiều dòng dữ liệu thì chỉ có giá trị của

dòng dữ liệu sau cùng mới được lưu trữ vào biến Điều này làm cho bạn không hề biết bởi vì hệ thống sẽ không báo lỗi

Do đó muốn tránh những trường hợp này cách tốt nhất là bạn luôn đảm bảo dữ liệu của

mình chỉ trả về duy nhất một dòng trong câu lệnh SELECT, thông thường bạn có thể sử dụng mệnh đề WHERE để lọc dữ liệu theo đúng điều kiện mình cần hoặc kết hợp các

hàm thống kê MIN, MAX, SUM để giới hạn số dòng trả về

Ví dụ :

Để tính ra số lượng đặt hàng cao nhất của mặt hàng "Đầu DVD Hitachi 1 đĩa" có mã vật

tư là "DD01", bạn sử dụng lệnh SELECT như sau :

Hoặc

Trang 4

Câu lệnh SELECT thứ hai kết hợp các mệnh đề ORDER BY DESC dùng để sắp xếp dữ liệu giảm dần theo cột số lượng đặt và sau đó kết hợp thêm mệnh đề TOP 1 để lấy ra thông tin của dòng đầu tiên Khi đó dữ liệu của lệnh SELECT sẽ trả về một dòng có giá

trị số lượng đặt hàng là lớn nhất

Mặc dù Microsoft SQL Server có cơ chế tự động chuyển đổi kiểu nhưng bạn không nên

sử dụng cách này Do vậy khi khai báo biến, bạn cần chỉ đúng kiểu dữ liệu mà biến sẽ lưu trữ

Ví dụ :

Biến @TongSoDH bên dưới có kiểu không hợp lệ, tuy nhiên hệ thống vẫn thực hiện bình thường không thông báo lỗi Biến @TongSoDH phải có kiểu là số nguyên INT

3/- Xem giá trị hiện hành của biến :

Sau khi đưa các giá trị cần lưu trữ vào bên trong các biến, bạn cũng có thể cần xem giá trị hiện hành mà biến đang lưu trữ là bao nhiêu Để làm điều này, bạn có thể sử dụng lệnh

PRINT để in nội dung mà biến hiện đang lưu trữ ra màn hình Cú pháp của lệnh PRINT

như sau :

Cú pháp :

Trong đó :

• Tên biến : tên của biến đã được khai báo trước đó mà bạn muốn xem giá trị hiện hành

đang lưu trữ Thôngt hường nếu kiểu dữ liệu của biến không phải là kiểu chuỗi (char

hoặc varchar) thì bạn nên sử dụng các hàm CAST hoặc hàm CONVERT để chuyển về

kiểu dữ liệu chuỗi tương ứng

• Biểu thức chuỗi : là một biểu thức chuỗi văn bản cần in ra Độ dài tối đa của chuỗi là

8.000 ký tự

Trang 5

Ví dụ :

Để tính đồng thời giá trị số lượng đặt hàng thấp nhất và cao nhất, sau đó hiển thị kết quả

ra màn hình cho bạn biết, bạn sử dụng lệnh SELECT và PRINT như sau :

Trong ví dụ trên, sử dụng hàm CONVERT dùng để chuyển đổi kiểu dữ liệu của biến

@MaxSldat từ kiểu số nguyên (INT) sang kiểu chuỗi (VARCHAR) và toán tử (+) dùng

để nối các chuỗi lại với nhau trong câu lệnh PRINT thứ hai

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

Trong Transaction-SQL phạm vi hoạt động của biến chỉ nằm bên trong một thủ tục nội tại (stored procedure) hoặc một lô (batch) chứa các câu lệnh mà biến đã được khai báo bên trong đó

Khái niệm về lô được xem như là một nhóm tập hợp của một hoặc nhiều câu lệnh Transaction-SQL sẽ được biênd ịch đồng thời cùng lúc tại Microsoft SQL Server và sau

đó hệ thống sẽ thực thi các câu lệnh này ngay sau khi đã biên dịch thành công Để chỉ

định một lô bạn sử dụng từ khóa GO Đây chỉ là từ khóa để chỉ định kết thúc một lô.

Ví dụ :

Bạn có một lô trong Transaction-SQL như sau :

Do các câu lệnh trong một lô sẽ được biên dịch tại Microsoft SQL Server vì thế khi có ít nhất một lệnh bên trong lô có lỗi về cú pháp lúc biên dịch thì sẽ không có câu lệnh nào được thực thi bên trong lô đó

Ví dụ :

Trang 6

Như ví dụ ở trên nhưng nếu bạn có bổ sung thêm lệnh INSERT mà cú pháp lệnh này bị sai (thiếu từ khóa VALUES) thì các lệnh SELECT bên trong lô này sẽ không được thực hiện

Hệ thống sẽ xuất hiện thông báo lỗi :

Tuy nhiên đối với các lỗi khi thực hiện (run-time) bên trong một lô nếu trường hợp các lỗi vi phạm ràng buộc toàn vẹn dữ liệu thì hệ thống Microsoft SQL Server chỉ ngưng lại câu lệnh gây ra lỗi và thực hiện tiếp các lệnh kế tiếp bên trong lô

Ví dụ :

Vẫn tiếp ví dụ trên nhưng nếu bạn có bổ sung từ khóa VALUES trong lệnh INSERT thì

lần này mặc dù chỉ có mỗi lệnh INSERT vi phạm ràng buộc toàn vẹn (giả sử trùng khóa chính ở cột mã nhà cung cấp) nhưng các lệnh SELECT bên trong lô này vẫn được thực hiện bình thường

Ví dụ :

Khai báo một biến cục bộ kiểu ngày dùng để lưu ngày đặt hàng gần dây nhất dựa trên dữ liệu của bảng DONDH tại cột Ngaydh Sau cùng in giá trị đ1o ra màn hình

Trang 7

Hệ thống sẽ hiển thị thông báo lỗi nếu bạn chèn thêm từ khóa GO ở giữa hai lệnh

SELECT và PRINT Bởi vì khi đó các lệnh này được chia ra làm hai lô và lô thứ hai sẽ không hiểu biến @Ngaydhgn đã được khai báo trong lô thứ nhất

Lưu ý :

Đối với các lệnh CREATE như là CREATE DEFAULT, CREATE PROCEDURE, CREATE RULE, CREATE TRIGGER, CREATE VIEW không được phép kết hợp với lệnh khác trong cùng một lô

SQL Server 2000 : Biến hệ thống

Không giống như các ngôn gnữ lập trình khác, Transaction-SQL không có khái niệm về biến toàn cục Thay vào đó hệ thống Microsoft SQL Server sẽ cung cấp cho người lập trình danh sách các biến hệ thống Các biến hệ thống bên trong Microsoft SQL Server luôn bắt đầu bằng hai chữ @@ và giá trị mà chúng đang lưu trữ là do hệ thống Microsoft SQL Server cung cấp, người lập trình không thể can thiệp trực tiếp để gán giá trị vào các biến hệ thống.

1/- Ý nghĩa sử dụng

Khi lập trình trong Transaction-SQL, bạn vẫn thường xuyên sử dụng giá trị của các biến

hệ thống để giúp kiểm tra kết quả thực hiện các lệnh trước đó Thật ra các biến hệ thống chính là các hàm đã được Microsoft SQL Server xây dựng bên trong và người lập trình chỉ việc tra cứu các giá trị hiện thời của nó để thực hiện các xử lý tiếp theo sau đó

Một vài biến hệ thống có giá trị thay đổi thường xuyên tùy thuộc vào các câu lệnh thực hiện trong Transaction-SQL, tuy nhiên bên cạnh đó cũng có một vài biến hệ thống có giá trị rất ít khi thay đổi

Trang 8

Biến @ROWCOUNT trả về tổng số mẫu tin được thực hiện trong câu lệnh gần nhất Biến hệ thống này có giá trị thay đổi rất thường xuyên

Giá trị của biến hệ thống @ROWCOUNT ở lần thứ nhất sẽ trả về tổng số mẫu tin hiện đang có trong bảng NHACC, và giá trị của biến hệ thống @@ROWCOUNT ở lần thứ hai

sẽ trả về tổng số mẫu tin có các mã vật tư bắt đầu bằng chữ "TV" trong bảng VATTU

Ví dụ :

Biến @@VERSION trả về phiên bản, ngày của sản phẩm Microsoft SQL Server và loại CPU, hệ điều hành của máy chủ cài đặt Microsoft SQL Server Biến hệ thống này có giá trị rất ít thay đổi, giá trị của nó chỉ thay đổi khi nào bạn nâng cấp hệ thống Microsoft SQL Server

2/- Một số biến hệ thống thường dùng :

Ý nghĩa của một số biến hệ thống thường dùng trong Microsoft SQL Server :

Ngày đăng: 03/12/2015, 18:13

TỪ KHÓA LIÊN QUAN

w