Bài giảng Kịch bản bó và OSQL

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.

pdf24 trang | Chia sẻ: haohao89 | Lượt xem: 1999 | Lượt tải: 0download
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)
Tài liệu liên quan