Bài giảng Client/Server - Chương 8: Thủ tục doc

18 338 0
Bài giảng Client/Server - Chương 8: Thủ tục doc

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

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

1 Bài 8: Thủ tục (Stored Procedure) • Khai báo thủ tục • Tham số EXECUTE AS – AS CALLER – AS OWNER – AS SELF • Thiết lập thủ tục tự động – sp_procoption 2 Khai báo thủ tục Cú pháp: CREATE PROC[EDURE] schema. procedure_name [ {@parameter data_type} [= default] [OUTPUT] ] [, n] [WITH {RECOMPILE | ENCRYPTION | EXECUTE AS { CALLER} }] AS sql_statement [ n] return EXECUTE AS CALLER: chỉ định là user muốn thực hiện thủ tục phải có quyền thực hiên trên thủ tục này, và có các quyền tương ứng trên các objects trong thủ tục. 3 Thực hiện thủ tục EXEC [ UTE ] {[@return_status=] {procedure_name[;number]|@procedure_name_var} [[@parameter=]{value|@variable[OUTPUT]|[DEFAULT]] [, n] [WITHRECOMPILE] } 4 VD: Tìm số lớn nhất trong 3 số a,b,c Use Test CREATE PROCEDURE dbo.MaxABC @a real=1, @b real=9, @c real=10, @max real output as set @max=@a if @max <@b set @max=@b if @max <@c set @max=@c return @max GO declare @max real,@return_status real exec @return_status = dbo.maxabc 100, default, default, @max output print @max print @return_status 5 Tìm USCLN Create proc uscln @a int, @b int, @c int output as declare @r int set @r= @a % @b While @r<>0 Begin set @a=@b Set @b=@r set @r= @a % @b End Set @c=@b return @c 6 Thủ tục đệ qui Create proc gt @i int, @j int,@m int output as declare @dum int, @t int if @i>1 Begin set @t=@i*@j set @i=@i-1 exec @dum=gt @i,@t,@m output End else set @m=@j declare @gt1 int exec gt 4,1, @gt1 output print @gt1 7 Gía cao nhất của các sản phẩm %Bikes% với ngưỡng @maxprice Use AdventureWorks Alter PROCEDURE Production.usp_GetList @product varchar(40), @maxprice money , @compareprice money OUTPUT, @listprice money OUTPUT AS SET @listprice = (SELECT MAX(p.ListPrice) FROM Production.Product p JOIN Production.ProductSubcategory s ON p.ProductSubcategoryID = s.ProductSubcategoryID WHERE s.Name LIKE @product AND p.ListPrice <@maxprice); Populate the output variable @compareprice. SET @compareprice = @maxprice; 8 Chạy thử với giá max=$10, $700 DECLARE @compareprice money, @cost money EXECUTE Production.usp_GetList '%Bikes%', 10, @compareprice OUT, @cost OUTPUT IF @cost <= @compareprice BEGIN PRINT 'These products can be purchased for less than $'+RTRIM(CAST(@compareprice AS varchar(20)))+'.' END ELSE PRINT 'The prices for all products in this category exceed $'+ RTRIM(CAST(@compareprice AS varchar(20)))+'.' 9 Sử dụng tham số cursor output USE AdventureWorks; GO CREATE PROCEDURE dbo.currency_cursor @currency_cursor CURSOR VARYING OUTPUT AS SET @currency_cursor = CURSOR FORWARD_ONLY STATIC FOR SELECT CurrencyCode, Name FROM Sales.Currency; OPEN @currency_cursor; GO 10 Sử dụng tham số cursor output (2) USE AdventureWorks; GO DECLARE @MyCursor CURSOR; EXEC dbo.currency_cursor @currency_cursor = @MyCursor OUTPUT; WHILE (@@FETCH_STATUS = 0) BEGIN; FETCH NEXT FROM @MyCursor; END; CLOSE @MyCursor; DEALLOCATE @MyCursor; [...]... MaSP, TenSP, Soluong,DonGia) 16 Bài tập 2 - Cho một file dữ liệu Input.txt gồm các xâu kí tự như trong bài tập 1 - Giả sử có hai bảng: DMSanPham(MaSP, TenSP) và bảng NhapHangHoa (MaHD, NguoiNhap, GhiChu, MaSP, Soluong, DonGia) - Hãy viết thủ tục hoặc hàm phân tích từng xâu kí tự trong file: - Nếu MaSP chưa có trong DMSanPham(MaSP, TenSP) thì ta chèn MaSP và TenSP vào bảng này - Chèn các giá trị MaHD, NguoiNhap,... vào bảng NhapHangHoa 17 Bài tập 3 - Cho một file dữ liệu Input.txt như trong bài tập 3 - Giả sử có ba bảng: DMSanPham(MaSP, TenSP), bảng NhapHangHoa (MaHD, NguoiNhap, GhiChu) và bảng NhapHangHoaChiTiet (MaHD, MaSP, Soluong,DonGia) - Hãy viết thủ tục hoặc hàm phân tích từng xâu kí tự trong file: - Nếu MaSP chưa có trong DMSanPham(MaSP, TenSP) thì ta chèn MaSP và TenSP vào bảng này - Nếu MaHD chưa có trong... @RowStart and RowNumber 0 Begin SET @PageNumber = @PageNumber -1 SET @RowStart = @PageSize * @PageNumber + 1; SET @RowEnd = @RowStart + @PageSize - 1; With Cust AS (... values(user_name(),getdate()) exec sp_procoption N'StartUpProcAudit', N'startup', N'true' 15 Bài tập 1 Cho một xâu kí tự là một tập hợp các phần tử viết cách nhau bởi một dấu ‘.’ Mỗi phần tử gồm có bảy thành phần, các thành phần viết cách nhau một dấu ‘;’ Ví dụ:Mã Hóa Đơn, Người Nhập, Ghi Chú, Mã Sản Phẩm; Tên Sản Phẩm; Số lượng; Đơn giá - Viết thủ tục hoặc hàm phân tích xâu kí tự trên và lấy ra các hóa đơn sau đó Insert... kí tự trong file: - Nếu MaSP chưa có trong DMSanPham(MaSP, TenSP) thì ta chèn MaSP và TenSP vào bảng này - Nếu MaHD chưa có trong bảng NhapHangHoa thì chèn giá trị MaHD, NguoiNhap, GhiChu vào bảng này - Chèn các giá trị MaHD,MaSP,SoLuong,DonGia vào bảng NhapHangHoaChiTiet 18 . 1 Bài 8: Thủ tục (Stored Procedure) • Khai báo thủ tục • Tham số EXECUTE AS – AS CALLER – AS OWNER – AS SELF • Thiết lập thủ tục tự động – sp_procoption 2 Khai báo thủ tục Cú pháp:. chỉ định là user muốn thực hiện thủ tục phải có quyền thực hiên trên thủ tục này, và có các quyền tương ứng trên các objects trong thủ tục. 3 Thực hiện thủ tục EXEC [ UTE ] {[@return_status=] {procedure_name[;number]|@procedure_name_var} [[@parameter=]{value|@variable[OUTPUT]|[DEFAULT]] [,. bài tập 1 - Giả sử có hai bảng: DMSanPham(MaSP, TenSP) và bảng NhapHangHoa (MaHD, NguoiNhap, GhiChu, MaSP, Soluong, DonGia) - Hãy viết thủ tục hoặc hàm phân tích từng xâu kí tự trong file: - Nếu

Ngày đăng: 27/06/2014, 03:20

Từ khóa liên quan

Mục lục

  • Bài 8: Thủ tục (Stored Procedure)

  • Khai báo thủ tục

  • Thực hiện thủ tục

  • VD: Tìm số lớn nhất trong 3 số a,b,c

  • Tìm USCLN

  • Thủ tục đệ qui

  • Gía cao nhất của các sản phẩm %Bikes% với ngưỡng @maxprice

  • Chạy thử với giá max=$10, $700

  • Sử dụng tham số cursor output

  • Sử dụng tham số cursor output (2)

  • Tham số EXECUTE AS

  • Thủ tục phân trang các bản ghi

  • Slide 13

  • Thiết lập một thủ tục tự động chạy

  • Thiết lập một thủ tục tự động chạy (2)

  • Bài tập 1

  • Bài tập 2

  • Bài tập 3

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan