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

SQL server 2005 – Lập trình, thủ tục và hàm part 10 ppsx

32 378 0
Tài liệu được quét OCR, nội dung có thể không chính xác

Đ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

Thông tin cơ bản

Định dạng
Số trang 32
Dung lượng 16,26 MB

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

Nội dung

Ví dụ UD-91-1: Khai báo xóa mẩu tin trong bảng Imports CREATE PROC udsDeleteImports @ImportNo VARCHAR 10 AS DELETE FROM Imports WHERE ImportNo = CASE @ImportNo WHEN '' THEN ImportN

Trang 1

CREATE PROC udsViewImports

@ImportNo VARCHAR (10)

AS

SELECT * FROM Imports

WHERE

ImportNo = CASE @ImportNo

WHEN '' THEN ImportNo

ELSE @ImportNo END

Trang 2

Hình UD-21-1: Liệt kê một mẩu tin

Nếu cho phép người sử dụng xóa mẩu tin trong bang Imports, bạn có

thể khai báo thủ tục nội tại như ví dụ UD-21-1

Ví dụ UD-91-1: Khai báo xóa mẩu tin trong bảng Imports

CREATE PROC udsDeleteImports

@ImportNo VARCHAR (10)

AS

DELETE FROM Imports

WHERE

ImportNo = CASE @ImportNo

WHEN '' THEN ImportNo

ELSE @ImportNo END

Ngoài ra, bạn cũng khai báo thủ tục nội tại cho phép người sử dụng

thêm mới và cập nhật mẩu tin trong bảng Imports như ví dụ UD-21-4

Ví dụ UD-21-4: Khai báo thêm và cập

CREATE PROC udsInsAndUpdImports

nhật mẩu tin]

Trang 3

INSERT INTO Imports

(ImportNo, ImportBatchNo, ImportDate,

ImportTypelId, Supplierid,

DescriptionInVietnamese,

DescriptionInSecondLanguage,

ImportDiscontinued, EntryDate, UserName}

VALUES (@ImportNo, @ImportBatchNo,

@ImportDate, @ImportTypeld, @SupplierTd,

Trong phần nhập kho, chúng ta có hai bảng dữ liệu chính là Imports

và ImportDetails Để quản lý dữ liệu bảng ImportDetails, bạn khai báo thủ

tục nội tại dùng để liệt kê danh sách mẩu tin trong bang ImportDetails dua

trên ba cột dữ liệu Impor£No, Produetld và OrdinalNumber như ví dụ

Trang 4

WHERE ImportNo = @ImportNo

AND OrdinalNumber = CASE @ordinalNumber

WHEN 0 THEN OrdinalNumber

ELSE @OrdinalNumber END

AND Product ID = CASE @ProductID

WHEN '' THEN Product ID

ELSE @Product ID END

GO

Để cho phép người sử dụng liệt kê tất cả mẩu tin trong bảng

ImportDetails, bạn khai báo gọi thủ tục nội tại udsViewImportDetails như hình UD-22

00000104 P0002 ST002 50

Hình UD-22: Liệt kê mdu tin trong bang ImportDetails

Khi liệt kê một mẩu tin chỉ định trong bảng ImportDetails thì bạn

khai báo tương tự như hình UD-22-1

Hình UD-22-1: Liệt kê một mẩu tin

Do mỗi khi người sử dụng xóa mẩu tin trong bảng Imports thì những mẩu tin liên quan trong bảng ImportDetails sẽ tự động xóa theo, cho nên chúng ta chỉ khai báo thủ tục nội tại để xóa một mẩu tin trong bảng

ImportDetails với cấu trúc như ví dụ UD-22-1

Trang 5

330 Ung dụng: Sử dụng thủ tục nội tại trong ứng dụng

CREATE PROC udsDeleteImportDetails

@ImportNo VARCHAR (10),

@ProductID VARCHAR (10),

@ordinalNumber TINYINT

AS

DELETE FROM ImportDetails

WHERE ImportNo = @ImportNo

AND OrdinalNumber = @OrdinalNumber

AND ProductID = @ProductID

Go

Khi xóa một mẩu tin trong bang ImportDetails, bạn có thể khai báo

gọi thủ tục tại udsDeletelmportDetails như ví dụ UD-22-2

Vi du UD-22-2: Khai báo xóa mẩu tỉn

í dự UD-27-3: Khai báo thêm và cập nhật mẩu tỉn|

ProductID, StockId, Quantity)

VALUES (@OrdinalNumber, @ImportNo,

@ProductID, @StockId, @Quantity)

ELSE

UPDATE ImportDetails

SET StockId = @StockId,

Quantity = @Quantity

WHERE ImportNo = @ImportNo

AND OrdinalNumber = @OrdinalNumber

AND ProductID = @ProductID

Go

Trang 6

Do mỗi lần thêm mẩu tin vào bảng ImportDetails, người sử dụng cần

cập nhật số lượng trong bảng ProductlnStocks, do dé ban cần khai báo Trigger như ví dụ UD-22-4

CREATE TRIGGER triInsImportDetails

ON ImportDetails

FOR INSERT

AS

Khai béo bién

DECLARE @ProductId VARCHAR (10}

DECLARE @StockId CHAR (3)

DECLARE @Quantity DECIMAL (18,0)

Khai báo lấy giá trị tương ứng gán uào biến

SELECT @ProductId= Productid,

@StockId = StockId, @Quantity = Quantity

UPDATE Product InStocks

SET GoodProduct InStock =

Khai bdo thém moi m@u tin uào bằng ProductinStocks

INSERT INTO Product InStocks

(ProductId, StockId, GoodProduct Instock)

VALUES (@Productid, @StockId, @Quantity?)

END

GO

Tương tự như vậy, mỗi khi người sử dụng xóa mẩu tin trong bảng

ImportDetails, bạn cẩn khai báo Trigger để trừ số lượng của sản phẩm trong kho

l9, TẾ ibang ImportDeta CREATE TRIGGER trilmportDetails

ON ImportDetails

Trang 7

DECLARE @ProductId VARCHAR (10)

DECLARE @StockId CHAR {3)

DECLARE @Quantity DECIMAL (18, 9)

SELECT @ProductId= ProductTd,

@StockTd = StockId, @Quantity = Quantity

FROM INSERTED

UPDATE ProductInStocks

SET GoodProduct InStock =

GoodProduct Instock - @Quantity

WHERE Product ld=@Productid

AND StockId=@StockId

GO

Nếu người sử đụng cập nhật số lượng nhập trong bảng ImportDetails, chúng ta cần xét hai trường hợp, nếu người sử dung cập nhật số lượng nhỏ hơn số lượng hiện hành thì chúng ta thực hiện phép toán trừ để giảm đi và

trường hợp ngược lại thì phép toán cộng để tăng thêm số lượng trong cột

GoodProductInStock của sản phẩm trong kho đó

Để làm điều này, bạn cần khai báo lại thủ tục nội tại có tên

udsInsAndUpdImportDetails thay vì sử dụng đối tượng Trigger như trường hợp thêm hay xóa mẩu tin trong bảng ImportDetails

ProductID, StockId, Quantity)

VALUES (@OrdinalNumber, @ImportNo,

@ProductID, @StockId, @Quantity)

ELSE

BEGIN

DECLARE @CurrentQtty DECIMAL (18,0)

DECLARE @UpdateQtty DECIMAL (18 20)

SELECT @Currentotty = Quantity

FROM ImportDetails

WHERE ImportNo = @ImportNo

AND OrdinalNumber = @OrdinalNumber

AND ProductIiD = @Product ID;

Trang 8

UPDATE ImportDetails

SET StockId = @StockId,

Quantity = @Quantity

WHERE ImportNo = @ImportNo

AND OrdinalNumber = @OrdinalNumber

AND ProductID = @Product ID;

SET @UpdateQtty = @Quantity - @CurrentQtty

UPDATE Product InStocks

SET GoodProduct InStock =

GoodProduct InStock + @UpdateQtty

WHERE Product Id=@ProductId

AND StockId=@StockId

END

GO

Nếu có nhu câu liệt kê số lượng nhập theo sản phẩm, bạn có thể khai

báo thủ tục nội tại như ví dụ UD-22-7

FROM Products P, ImportDetails D

WHERE P Product ID = D Product ID

AND D Product ID = CASE @ProductID

WHEN '' THEN D Product ID

ELSE @ProductID END

GROUP BY ProductNameInVietNamese, P.ProductID

Trang 9

334 Ứng dụng: Sử dụng thủ tục nội tại trong ứng dụng

4.2 Phần xuất kho

Tương tự như phần nhập kho, khi làm việc với phần xuất kho, bạn

quan tâm các bảng dữ liệu liên quan như: ExportTypes, ExportBatchs, Exports va ExportDetails

4.2.1 Bang ExportTypes

Để làm việc với bảng ExportTypes, bạn bắt đầu khai báo thủ tục nội tại dùng để liệt kê danh sách mẩu tin như ví dụ UD-23

CREATE PROC uđsViewExportTypes

@ExportTypeld CHAR (3)

AS

SELECT * FROM Export Types

WHERE

ExportTypeld = CASE @ExportTypeId

WHEN '' THEN Export TypelId

ELSE @Export TypeId END

Nếu có nhu câu liệt kê tất cả mẩu tin trong bang ExportTypes, ban

khai báo gọi thủ tục nội tại udsViewExportTypes như hình UD-23

1 q + Export products to customers

| | 2 E02 Export products to agents

Hinh UD-23: Liét kê mẩu tin trong bảng ExportTypes

Đối với trường hợp liệt kê một mẩu tin trong bảng ExportTypes thì bạn khai báo tương tự như hình UD-23-1

Trang 10

alee ExportTypelD | ExportTypeName

LS Export products to agents

Hình UD-23-1: Liệt kê một mẩu tin

Trong trường hợp xóa mẩu tin trong bảng ExportTypes, bạn có thể

khai báo thủ tục nội tại như ví dụ UD-23-1

Ví dụ UD-23-1: Khai báo xóa mẩu tin trong

CREATE PROC udsDeleteExportTypes

@Export Typeld CHAR (3)

AS

DELETE FROM ExportTypes

WHERE

Export Typeld = CASE @ExportTypeTd

WHEN '' THEN ExportTypeId

ELSE @ExportTypelId END

s bang ExportTypes

GO

Rhi xóa một mẩu tin trong bảng ExportTypes, bạn có thể khai báo

gọi thủ tục nội tại udsDeleteExportTypes như ví dụ UD-23-2

Ví dụ UD-23-4: Khai báo thêm và cập nhật mẩu tỉn|

CREATE PROC udsInsAndUpdExportTypes

Trang 11

INSERT INTO ExportTypes

VALUES (@ExportTypeld, @ExportTypeName)

ELSE

UPDATE ExportTypes

SET Export TypeName = @ExportTypeName

WHERE Export Typeld = @ExportTypeId

GO

4.2.2 Bang ExportBatchs

Tương tự như bảng ImportBatchs, khi lam việc với bảng

ExportBatchs, bạn bắt đầu khai báo thủ tục nội tại dùng để liệt kê danh sách mẩu tin như ví dụ UD-24

CREATE PROC udsViewExportBatchs

@ExportBatchNo CHAR (3)

AS

SELECT * FROM ExportBatchs

WHERE

Export BatchNo = CASE @ExportBatchNo

WHEN '' THEN Export BatchNo

ELSE @ExportBatchNo END

Go

Để cho phép liệt kê tất cả mẩu tin trong bảng ExportBatchs, bạn

khai báo gọi thủ tục nội tại udsViewExportBatchs như hình UD-24

Hình UD-24: Liệt kê mẩu tin trong bdng ExportBatchs

Trang 12

Tuy nhiên, khi liệt kê một mẩu tin thì bạn khai báo tương tự như

hình UD-24-1

udsViewExportBatchs 'EBI006'

GO

GG Resuts | [7 Messages

| ExpottBatchNo ExpotBaichDale | ExportDiscontinued | EntryDate | Userttame

L1 |EB06 ^ 1 2071020000000 0 2007-09-09 080400, khang

Hình UD-24-1: Liệt kê một mẩu tin

Nếu cho phép người sử dụng xóa mẩu tin trong bảng ExportBatchs, bạn có thể khai báo thủ tục nội tại như ví dụ UD-24-1

Export BatchNo = CASE @ExportBatchNo

WHEN '' THEN ExportBatchNo

ELSE @ExportBatchNo END

GO

Nếu người sử dụng muốn xóa một mẩu tin trong bảng ExportBatchs,

họ có thể khai báo gọi thủ tục nội tại udsDeleteExportBatchs như ví dụ

Nếu bạn cung cấp giá tri réng cho tham sé @ExportBatchNo thi tha

tục nội tại sẽ xóa tất cả mẩu tin trong bảng ExportBatchs như ví dụ UD-24-3

Ví dụ UD-24-3: Khai báo xóa tất cả các mau tin|

udsDeleteExportBatchs ''

GO

Bạn cũng khai báo thủ tục nội tại cho phép người sử dụng thêm mới

và cập nhật mẩu tin trong bảng ExportBatchs như ví dụ UD-24-4

Trang 13

Ứng dụng: Sử dụng thủ tục nội tại trong ứng dụng

` áo thêm và e, nhật mầu tin

CREATE PROC udsInsAndUpdExportBatchs

UPDATE Export Batchs

SET ExportBatchDate = @ExportBatchDate,

@ExportNo VARCHAR (10)

AS

SELECT * FROM Exports

WHERE

ExportNo = CASE @ExportNo

WHEN '' THEN ExportNo

ELSE @ExportNo END

GO

Nếu muốn liệt kê tất cả mẩu tin trong bang Exports, ban khai báo gọi

thủ tục nội tại udsViewExports như hình UD-25

Trang 14

4 EX00000004 EBIDI 2007-10-13 00:00:00 £01 A0001

Ex00000005 EBID02 2007-10-14 10:00:00 E01 A0004

EX00000006 EBIO02 2071014000000 E01 A0005

E⁄00000007 EBI003 2007-10-17 00:00:00 E01 A0006

400000008 EBID03 2007-1017 00.0000 E01 A0007 EX00000003 EBI004 2007-10-18 00:00:00 E01 A0008 EX00000010 EBID05 2071019000000 E01 A0001 EX00000011 EBI005 2071019000000 E01 A0002 Ex00000012 EBID 2007-10-20 000000 E01 A0001 EX00000013 EBIUOE 2071020000000 E01 A0005

Hình UD-2ð: Liệt kê mẩu tin trong bảng Exports

hi liệt kê một mẩu tin chỉ định trong bảng Exports thì bạn khai báo

tương tự như hình UD-25-1

Hình UD-25-1: Liệt kê một mẩu tin

Nếu cho phép người sử dụng xóa mẩu tin trong bảng Exports, bạn có

thể khai báo thủ tục nội tại như ví dụ UD-2ð-1

ExportNo = CASE @ExportNo

WHEN '' THEN ExportNo

ELSE @ExportNo END

GO

Trang 15

340 Ứng dụng: Sử dụng thủ tục nội tại trong ứng dụng Rhi người sử dụng muốn xóa một mẩu tin trong bang ExportTypes,

họ có thể khai báo gọi thú tục nội tại udsDeleteExports như ví dụ UD-25-2

Ví dụ UD-25-2: Khai háo xóa một mẩu tỉn|

udsDeleteExports 'EBN000007'

GO

Nếu bạn cung cấp giá trị rỗng cho tham số ®BxportNo thì thủ tục nội

tại sẽ xóa tất cả mẩu tin trong bảng Exports như ví dụ UD-25-3

Ví dụ UD-25-3: Khai báo xóa tất cả các mẩu tin|

udsDeleteExports ''

GO

Bạn cũng khai báo thủ tục nội tai cho phép người sử dụng thêm mới

và cập nhật mẩu tín trong bắng Exports như ví du UD-25-4,

Ví dụ UD-25-4: Khai báo thêm và cập nị

CREATE PROC udsInsAndUpdExports

@Descript ionInSecondLanguage NVARCHAR (150)

GExportDiscont inued BIT

AS

IF @Flag = 0

INSERT INTO Exports

(ExportNo, ExportBatchNo, ExportDate,

ExportTypelrd, CustomerId,

DescriptionInVietnamese,

DescriptionInSecondLanguage,

Export Discontinued, EntryDate, UserName)

VALUES (@ExportNo, @ExportBatchNo,

@ExportDate, @ExportTypeld, @Customerld,

Trang 16

"Tương tư như phần nhập kho, khi làm việc với phần xuất kho chúng

ta có hai bảng dữ liệu chính là Exports và ExportDetails Để quản lý dữ liệu bảng ExportDetails, bạn khai báo thủ tục nội tại dùng để liệt kê danh sách mẩu tin trong bảng ExportDetails dựa trên ba cột dữ liệu ExportNo, ProductId va OrdinalNumber như ví dụ UD-26

SELECT * FROM ExportDetails

WHERE ExportNo = @ExportNo

AND OrdinalNumber = CASE @OrdinalNumber

WHEN 0 THEN OrdinalNumber

ELSE @OrdinalNumber END

AND Product ID = CASE @ProductID

WHEN '' THEN ProductID

ELSE @Product ID END

GO

Để cho phép người sử dụng liệt kê tất cả mẩu tin trong bảng

ExportDetails, bạn khai báo gọi thủ tục nội tại udsViewExportDetails như

Hình UD-26: Liệt kê mẩu tin trong bảng ExportDetails

Rhi liệt kê một mẩu tin chỉ định trong bảng ExportDetails thi ban khai báo tương tự như hình UD-26-1

Trang 17

Hình UD-26-1: Liệt bê một mẩu tin

Do mỗi khi người sử dụng xóa mẩu tin trong bảng Exports thì những mẩu tin liên quan trong bảng ExportDetails sẽ tự động xóa theo, cho nên chúng ta chỉ khai báo thủ tục nội tại để xóa một mẩu tin trong bảng

ExportDetails với cấu trúc như ví dụ UD-26-1

Ví dụ UD-26-1: Khai báo xóa mẩu tỉn trong ExportDetails|

CREATE PROC udsDeleteExportDetails

@ExportNo VARCHAR (10),

@ProductID VARCHAR (10),

@OrdinalNumber TINYINT

AS

DELETE FROM ExportDetails

WHERE ExportNo = @ExportNo

AND OrdinalNumber = @OrdinalNumber

AND ProductID = @ProductID

GO

Khi xóa tất cả mẩu tin trong bang ExportTypes cia phiếu xuất

EX00000001, ban cé thể khai báo gọi thủ tục nội tại udsDeleteExportDetails

r Khai báo thêm và cập nhật rhẩu tỉn|

CREATE PROC udsInsAndUpdExportDetails

Trang 18

ProductID, StockId, Quantity)

VALUES (@OrdinalNumber, @ExportNo,

@ProductID, @StockId, @Quantity}

ELSE

UPDATE ExportDetails

SET StockId = @StockId,

Quantity = @Quantity

WHERE ExportNo = @ExportNo

AND OrdinalNumber = @OrdinalNumber

AND ProductID = @ProductID

GO

Do mỗi lần thêm mẩu tin vào bảng ExportDetails, người sử dụng cần

cập nhật (giảm) số lượng trong bảng ProductInStocks, do đó bạn cần khai báo Trigger như ví dụ UÐ-26-4

Ví dụ UD-26-4: Khai báo Trigger cho trường hợp thêm mẩu tỉn v:

DECLARE @ProductId VARCHAR (10)

DECLARE @StockId CHAR (3}

DECLARE @Quantity DECIMAL (18,0)

SELECT @ProductId= Productid,

@StockId = StockId, @Quantity = Quantity

FROM INSERTED

UPDATE Product InStocks

SET GoodProduct InStock =

GoodProduct InStock ~ @Quantity

WHERE Product Id=@Productid

Ngày đăng: 11/08/2014, 00:24

HÌNH ẢNH LIÊN QUAN

Hình  UD-22:  Liệt  kê  mdu  tin  trong  bang  ImportDetails. - SQL server 2005 – Lập trình, thủ tục và hàm part 10 ppsx
nh UD-22: Liệt kê mdu tin trong bang ImportDetails (Trang 4)
Hình  UD-22-2. - SQL server 2005 – Lập trình, thủ tục và hàm part 10 ppsx
nh UD-22-2 (Trang 8)
Hình  UD-24:  Liệt  kê  mẩu  tin  trong  bdng  ExportBatchs. - SQL server 2005 – Lập trình, thủ tục và hàm part 10 ppsx
nh UD-24: Liệt kê mẩu tin trong bdng ExportBatchs (Trang 11)
Hình  UD-24-1:  Liệt  kê  một  mẩu  tin. - SQL server 2005 – Lập trình, thủ tục và hàm part 10 ppsx
nh UD-24-1: Liệt kê một mẩu tin (Trang 12)
Hình  UD-25-1:  Liệt  kê  một  mẩu  tin. - SQL server 2005 – Lập trình, thủ tục và hàm part 10 ppsx
nh UD-25-1: Liệt kê một mẩu tin (Trang 14)
Hình  UD-26:  Liệt  kê  mẩu  tin  trong  bảng  ExportDetails. - SQL server 2005 – Lập trình, thủ tục và hàm part 10 ppsx
nh UD-26: Liệt kê mẩu tin trong bảng ExportDetails (Trang 16)
Hình  UD-26-2:  Xuất  không  theo  mã  sản  phẩm. - SQL server 2005 – Lập trình, thủ tục và hàm part 10 ppsx
nh UD-26-2: Xuất không theo mã sản phẩm (Trang 20)
Hình  UD-27-1:  Thống  kê  số  lượng  nhập  uù  xuất  của  sản  phẩm  P00002. - SQL server 2005 – Lập trình, thủ tục và hàm part 10 ppsx
nh UD-27-1: Thống kê số lượng nhập uù xuất của sản phẩm P00002 (Trang 22)
Hình  UD-27-8:  Tình  hình  tôn  kho  của  sản  phẩm  P00001. - SQL server 2005 – Lập trình, thủ tục và hàm part 10 ppsx
nh UD-27-8: Tình hình tôn kho của sản phẩm P00001 (Trang 24)

TỪ KHÓA LIÊN QUAN