Khi soạn thảo các câu lệnh SQL ởnhững phần trước, hầu hết những câu lệnh mà ta sử dụng được gọi là kịch bản SQL hay Script
Các câu lệnh Create, Alter, hay Select chúng ta thực hiện dưới mọi hình thức đều được gọi là kịch bản.
Bất kỳ một Script nào được tạo ra đều có mục đích rõ ràng.
24 trang |
Chia sẻ: haohao89 | Lượt xem: 1999 | Lượt tải: 0
Bạn đang xem trước 20 trang tài liệu Bài giảng Kịch bản bó và OSQL, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Nguyễn Trọng Anh
E-Mail: anh@tronganh.com
tronganh@gmail.com
Home:
Kịch bản (script) bó
(batchs) và OSQL
1-2SQL server 2000 – Transact SQL
Tóm tắt
•Khái niệm cơ bản về kịch bản (script)
•Khai báo biến trong SQL Server
•Sử dụng hàm IDENTITY
•Sử dụng hàm ROWCOUNT
•Khái niệm cơ bản về OSQL
1-3SQL server 2000 – Transact SQL
Khái niệm về kịch bản (script)
Khi soạn thảo các câu lệnh SQL ở những phần
trước, hầu hết những câu lệnh mà ta sử dụng
được gọi là kịch bản SQL hay Script
Các câu lệnh Create, Alter, hay Select chúng ta
thực hiện dưới mọi hình thức đều được gọi là kịch
bản.
Bất kỳ một Script nào được tạo ra đều có mục
đích rõ ràng.
1-4SQL server 2000 – Transact SQL
Kịch bản đơn giản
Về mặt kỹ thuật, kịch bản không phải là một kịch
bản cho đến khi chúng được ghi thành 1 tập tin.
Khi lưu trữ thành tập tin, nếu cần chúng ta có thể
sử dụng mà không cần viết lại toàn bộ các câu
lệnh SQL từ đầu.
Lưu dưới dạng File Text
Khi tạo ra script chúng ta có thể sử dụng các hàm
của hệ thống, các câu lệnh đã được đề cập trước
1-5SQL server 2000 – Transact SQL
Câu lệnh USE
Dùng để khai báo cơ sở dữ liệu hiện tại.
Chỉ ra đối tượng của CSDL có thể xử lý được.
Nếu không chỉ rõ cơ sở dữ liệu thì các câu lệnh có
hiệu lực đối với CSDL hiện hành.
Nên sử dụng khi gọi CSDL khác với CSDL hiện
tại đang dùng
1-6SQL server 2000 – Transact SQL
Khai báo biến trong SQL Server
Khi thực hiện các câu lệnh SQL trong bất kỳ ứng
dụng nào chúng ta đều cần đến nhu cầu tính
toán.
Khi tính toán thường ta cần khai báo biến hoặc sử
dụng một số phép toán.
Khi khai báo nhiều biến, ta sử dụng dấu phẩy để
ngăn cách các biến.
1-7SQL server 2000 – Transact SQL
Cú pháp khai báo biến
Declare @ [,
@ ] [,
@ ]
Khai báo một, biến có giá trị ban đầu là NULL cho
đến khi biến đó được gán giá trị.
Các ứng dụng trong quá trình tính toán, sử dụng
phép tính hoặc hàm hệ thống, biến được khai báo
để thực hiện mục đích này của người lập trình.
1-8SQL server 2000 – Transact SQL
Ví dụ khai báo biến
Declare @Amount int
Declare @FullName varchar(20)
Declare @Address,email varchar(200)
Declare @phone,mobile varchar(200), @salary
int
Nếu khai báo nhiều biến tắt, các biến đó có cùng
kiểu giá trị.
Kết thúc một nhóm biến có cùng kiểu dữ liệu cách
nhau dấu phẩy.
1-9SQL server 2000 – Transact SQL
Gán cho biến giá trị cụ thể
Gán với một giá trị trực tiếp
SET @Luong = 500
Gán giá biến từ một biến và giá trị hằng
SET @VATluong = 500 * 0.1
Gán giá trị đó là kết quả của biểu thức SELECT
SET @tongluong = (Select sum(Luong) from
BangLuong)
If @Tongluong is NULL
@Tongluong = 0
1-10SQL server 2000 – Transact SQL
Chú ý khi gán giá trị từ câu
lệnh SELECT
Khi sử dụng phép gán biến với giá trị từ một biểu
thức SELECT cần chú ý:
–Giá trị trả về có cùng kiểu dữ liệu của biến
–Nếu biến không phải là mảng, giá trị phải là
duy nhất.
–Phép gán biến không cho phép sử dụng
trong các câu lệnh SQL
1-11SQL server 2000 – Transact SQL
Một số hàm hệ thống thông
dụng
@@DATEFIRST : trả về ngày đầu tiên trong
tuần. Nếu thay đổi ngày hệ thống thì kết quả trả
về theo hệ thống thay đổi theo.
@@FETCH_STATUS: Sử dụng chung với
FETCH. Trả về 0 nếu đọc mẩu tin hợp lệ, -1 con
trỏ đang ở cuối bảng, -2 bản ghi đó đang bị xoá.
@@IDENTITY: Trả về giá trị nhận dạng cuối
cùng của câu lệnh SELECT hay INSERT INTO
@@ROWCOUNT: trả về số bản ghi có ảnh
hưởng đến câu lệnh SQL cuối cùng.
1-12SQL server 2000 – Transact SQL
Một số hàm hệ thống thông
dụng
@@ERROR: trả về mã lỗi của câu lệnh SQL sau
cùng của kết nối đang mở.
@@SERVERNAME: Trả về tên của máy chủ cục
bộ mà kịch bản SQL đang thực thi.
@@TRANCOUNT: Trả về số lượng các nghiệp
vụ SQL server với các kết nối hiện tại
1-13SQL server 2000 – Transact SQL
Sử dụng @@ROWCOUNT
Trong nhiều trường hợp SELECT, chúng ta muốn
biết có bao nhiêu bản ghi trong bảng vừa truy
vấn. Sử dụng biến để gán giá trị lấy được từ hàm
ROWCOUNT vào biến cục bộ
select * from shippers where shipperID < 5
declare @mautin int
select @mautin = @@ROWCOUNT
print 'So mau tin :' + str(@mautin)
1-14SQL server 2000 – Transact SQL
BÓ - BATCH
1-15SQL server 2000 – Transact SQL
BÓ - Batch
Bó là một nhóm câu lệnh SQL được nhóm lại
thành 1 đơn vị, tất cả câu lệnh SQL trong bó có
thể thực hiện như một đoạn lệnh chương trình.
Những câu lệnh này có thể quan hệ với nhau và
được thực hiện một cách liên tục
Nếu lỗi phát sinh, thì các câu lệnh đằng sau sẽ bị
bỏ qua.
Trong trường hợp có nhiều bó thì cần dùng phát
biểu GO để phân chia các bó
1-16SQL server 2000 – Transact SQL
BÓ - Batch
Mỗi bó được gửi đến Server và được thực hiện
độc lập.
Khi một bó nào đó có lỗi. Các bó khác vẫn bình
thực hiện độc lập
Biến được khai báo và có hiệu lực trong phạm vi
của Bó
1-17SQL server 2000 – Transact SQL
Sử dụng Go, trường hợp lỗi
declare @loichao varchar(50)
select @loichao = 'Xin chao'
print 'Batch dau tien'
Go
print @loichao
print 'Batch thu 2'
Go
print 'Batch thu 3'
Go
1-18SQL server 2000 – Transact SQL
Chú ý
Go không phải là câu lệnh SQL.
Nếu sử dụng Go khi dùng các phương thức
ODBC, hay ADO DB … hoặc bất kỳ phương thức
truy cập cơ sở dữ liệu nào khác sẽ phát sinh lỗi từ
SQL trả về
1-19SQL server 2000 – Transact SQL
OSQL
OSQL là mộ công cụ cho phép thực hiện câu lệnh
SQL tại dấu nhắc cửa sổ DOS
osql -Usa -P -d northwind -Q "Select * from
shippers"
1-20SQL server 2000 – Transact SQL
OSQL
Chúng cũng có thể chạy kịch bản trong file ở dấu
nhắc của DOS.
Lưu nội dung các câu lệnh vào file.sql
Có nội dung:
select * from shippers
select * from shippers where shipperid < 5
Sau đó gọi lệnh sau:
osql -Usa -P -d northwind -i file.sql
1-21SQL server 2000 – Transact SQL
SQL động
1-22SQL server 2000 – Transact SQL
SQL động
Trong quá trình phát triển ứng dụng, đôi khi
chúng ta cần thực hiện một phát biểu SQL không
định nghĩa trước Î SQL động
Một câu lệnh SQL mà tên bảng từ bên ngoài hay
tên bảng xuất phát từ phép gán nào đó thì chúng
ta gọi là SQL động
1-23SQL server 2000 – Transact SQL
SQL động
Truyền tên bảng trong khi chạy các câu lệnh SQL
declare @tenbang varchar(50)
set @tenbang = 'shippers'
exec('select * from ' + @tenbang )
Ta có thể sử dụng EXEC hoặc EXECUTE để thực
hiện câu lệnh SQL
1-24SQL server 2000 – Transact SQL
SQL động
Gán toàn bộ cả câu lệnh SQL trong khi chạy.
Các câu lệnh được xây dựng trong quá trình chạy
declare @caulenh varchar(250)
set @caulenh = 'select * From shippers'
set @caulenh = @caulenh + ' where shipperid < 5
'
exec(@caulenh)