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

Thực hành Hệ quản trị cơ sơ dũ liệu SQL Server

55 989 0

Đ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 55
Dung lượng 0,97 MB

Nội dung

Thực Hành Hệ Quản Trị Cơ Sở Dữ Liệu(SQL SERVER) – 11 LT-TM create database QLNXTONKHO on primary ( name=QLNXTONKHO_DATA, filename='D:\QLNXTONKHO_DATA.MDF', size=50MB, maxsize=200MB, filegrowth=10MB ) log on ( name=QLNXTONKHO_LOG, filename='D:\QLNXTONKHO_LOG.LDF', size=10MB, maxsize=unlimited, filegrowth=5MB ) use QLNXTONKHO create table VATTU ( Mavtu char(4) not null, Tenvtu nvarchar(50), Dvitinh nvarchar(10), Phantram real ) create table NHACC ( Manhacc char(4) not null, Tenncc nvarchar(50), Diachi nvarchar(50), Dienthoai char(15) ) create table DONDH ( Sodh char(4) not null, Ngaydh datetime, Manhacc char(4) not null ) Ngô Tất Đạt Page Thực Hành Hệ Quản Trị Cơ Sở Dữ Liệu(SQL SERVER) – 11 LT-TM create table CTDONDH ( Sodh char(4) not null, Mavtu char(4) not null, Sldat int ) create table PNHAP ( Sopn char(4) not null, Ngaynhap datetime, Sodh char(4) not null ) create table CTPNHAP ( Sopn char(4) not null, Mavtu char(4) not null, Slnhap int, Dgnhap money ) create table PXUAT ( Sopx char(4) not null, Ngayxuat datetime, Tenkh nvarchar(100) ) create table CTPXUAT ( Sopx char(4) not null, Mavtu char(4) not null, Slxuat int, Dgxuat money ) create table TONKHO ( Namthang char(6) not null, Mavtu char(4) not null, Sldau int, Ngô Tất Đạt Page Thực Hành Hệ Quản Trị Cơ Sở Dữ Liệu(SQL SERVER) – 11 LT-TM Tongslnhap int, Tongslxuat int, Slcuoi int ) Tạo ràng buộc khóa chính, khóa ngoại alter table VATTU add constraint PK_VT primary key(Mavtu) alter table NHACC add constraint PK_NCC primary key(Manhacc) alter table DONDH add constraint PK_DDH primary key(Sodh), constraint FK_DDH_MANCC foreign key(Manhacc) references NHACC(Manhacc) alter table CTDONDH add constraint PK_CTDH primary key(Sodh,Mavtu), constraint FK_CTDH_SODH foreign key(Sodh) references DONDH(Sodh), constraint FK_CTDH_MAVT foreign key(Mavtu) references VATTU(Mavtu) alter table PNHAP add constraint PK_PNHAP primary key(Sopn), constraint FK_PNHAP_Sodh foreign key(Sodh) references DONDH(Sodh) alter table CTPNHAP add constraint PK_CTPNHAP primary key(Sopn,Mavtu), constraint FK_CTPNHAP_SOPN foreign key(Sopn) references PNHAP(Sopn), constraint FK_CTPNHAP_MAVT foreign key(Mavtu) references VATTU(Mavtu) alter table PXUAT add constraint PK_PXUAT primary key(Sopx) alter table CTPXUAT add Ngô Tất Đạt Page Thực Hành Hệ Quản Trị Cơ Sở Dữ Liệu(SQL SERVER) – 11 LT-TM constraint PK_CTPXUAT primary key(Sopx,Mavtu), constraint FK_CTPXUAT_SOPX foreign key(Sopx) references PXUAT(Sopx), constraint FK_CTPXUAT_MAVT foreign key(Mavtu) references VATTU(Mavtu) alter table TONKHO add constraint PK_TONKHO primary key(Namthang,Mavtu), constraint FK_TONKHO_MAVT foreign key(Mavtu) references VATTU(Mavtu) Tạo ràng buộc alter table VATTU add constraint UN_VT unique(Tenvtu), constraint DF_VT_DVT default N'Cái' for dvitinh, constraint CHK_VT_PT check(PhanTram between and 100) alter table NHACC add constraint UN_NCC_TENNCC unique(Tenncc), constraint UN_NCC_DC unique(Diachi), constraint DF_NCC_DT default N'Chưa có' for Dienthoai alter table CTDONDH add constraint CHK_CTDH check(Sldat>0) alter table CTPNHAP add constraint CHK_CTPN_SLN check(Slnhap>0), constraint CHK_CTPN_DGN check(Dgnhap>0) alter table CTPXUAT add constraint CHK_CTPX_SLX check(Slxuat>0), constraint CHK_CTPX_DGX check(Dgxuat>0) alter table TONKHO add constraint CHK_TONKHO_SLD check(Sldau>=0), constraint CHK_TONKHO_TSLN check(Tongslnhap>=0), Ngô Tất Đạt Page Thực Hành Hệ Quản Trị Cơ Sở Dữ Liệu(SQL SERVER) – 11 LT-TM constraint CHK_TONKHO_TSLX check(Tongslxuat>=0), constraint DF_TONKHO_SLD default for Sldau, constraint DF_TONKHO_TSLN default for Tongslnhap, constraint DF_TONKHO_TSLX default for Tongslxuat Chèn liệu insert into VATTU values('BU01',N'Bàn ủi Philip A',N'Cái',17) insert into VATTU values('BU02',N'Bàn ủi Philip B',N'Cái',17) insert into VATTU values('BU03',N'Bàn ủi Philip C',N'Cái',17) insert into VATTU values('DD01',N'Đầu Hitachi đĩa',N'Bộ',40) insert into VATTU values('DD02',N'Đầu Hitachi đĩa',N'Bộ',40) insert into VATTU values('KO02',N'Đầu Karaoke',N'Bộ',30) insert into VATTU values('KO04',N'Đầu Karaoke số',N'Bộ',30) insert into VATTU values('MH01',N'Máy hát sony đời IK-2002',N'Bộ',NULL) insert into VATTU values('TL15',N'Tủ lạnh Sanyo 150 lít',N'Cái',25) insert into VATTU values('TL90',N'Tủ lạnh Sanyo 90 lít',N'Cái',20) insert into VATTU values('TV14',N'Tivi Sony 14 inches',N'Cái',15) insert into VATTU values('TV21',N'Tivi Sony 21 inches',N'Cái',10) insert into VATTU values('TV29',N'Tivi Sony 29 inches',N'Cái',10) insert into VATTU values('TV35',N'Tivi Sony 35 inches',N'Cái',100) insert into VATTU values('TV40',N'Tivi Sony 40 inches',N'Cái',100) insert into VATTU values('TV50',N'Tivi Sony 50 inches',N'Cái',37) insert into VATTU values('TV51',N'Tivi Sony 51 inches',N'cái',37) insert into VATTU values('TV53',N'Tivi Sony 53 inches',N'Cái',80) insert into VATTU values('VD01',N'Đầu VCD Sony đĩa',N'Bộ',30) insert into VATTU values('VD02',N'Đầu VCD Sony đĩa',N'Bộ',15) THEM GIA TRI VAO BANG NHACC-insert into NHACC Values('C01',N'Lê Minh Trí',N'54,Hậu Giang,Q6,HCM',8781024) insert into NHACC Values('C02',N'Trần Minh Thạch',N'145,Hùng Vương, Mỹ Tho',7698154) insert into NHACC Values('C03',N'Hùng Phương',N'154/85, Lê Lai, Q1,HCM',9600125) insert into NHACC Values('C04',N'Nhã Thương',N'198/40,Hương Lộ 14,QTB,HCM',8757757) insert into NHACC Values('C05',N'Luu Nguyệt Quế',N'178, Nguyễn Văn Luông, Ðà Lạt',796451) insert into NHACC Values('C07',N'Cao Minh Trung',N'125,Lê Quang Trung',default) THEM GIA TRI VAO BANG DONDH-Ngô Tất Đạt Page Thực Hành Hệ Quản Trị Cơ Sở Dữ Liệu(SQL SERVER) – 11 LT-TM insert into DONDH Values('D002','2/1/2002','C01') insert into DonDH Values('D003','2/10/2006','C02') insert into DONDH Values('D004','2/17/2006','C05') insert into DONDH Values('D005','3/1/2006','C02') insert into DONDH Values('D001', '7/1/2006','C04') THEM GIA TRI VAO BANG CTDONDH-insert into CTDONDH Values('D001','DD01',20) insert into CTDONDH Values('D001','DD02',15) insert into CTDONDH Values('D002','VD02',30) insert into CTDONDH Values('D001','TV14',30) insert into CTDONDH Values('D003','TV14',10) insert into CTDONDH Values('D003','TV29',20) insert into CTDONDH Values('D004','TL90',10) insert into CTDONDH Values('D005','TV14',10) insert into CTDONDH Values('D005','TV29',20) THEM GIA TRI VAO BANG PNHAP-insert into PNHAP Values('N001','1/17/2006','D001') insert into PNHAP Values('N002','1/20/2006','D004') insert into PNHAP Values('N003','1/31/2006','D002') insert into PNHAP Values('N004','2/15/2006','D003') insert into PNHAP Values('N005','2/15/2007','D003') insert into PNHAP Values('N006','2/28/2007','D005') THEM GIA TRI VAO BANG CTPNHAP-insert into CTPNHAP Values('N001','DD01',8,2500000) insert into CTPNHAP Values('N001','DD02',10,3500000) insert into CTPNHAP Values('N002','DD02',5,3500000) insert into CTPNHAP Values('N003','VD02',30,2500000) insert into CTPNHAP Values('N004','TV14',5,2500000) insert into CTPNHAP Values('N004','TV29',2,3500000) insert into CTPNHAP Values('N006','DD01',190,200000) insert into CTPNHAP Values('N006','TV29',2,200000) THEM GIA TRI VAO BANG PXUAT-insert into PXuat Values('X001','1/17/2006',N'Nguyễn Thị Phương Nhi') Ngô Tất Đạt Page Thực Hành Hệ Quản Trị Cơ Sở Dữ Liệu(SQL SERVER) – 11 LT-TM insert into PXuat Values('X002','1/25/2006',N'Nguyễn Hùng Phương') insert into PXuat Values('X003','1/31/2006',N'Nguyễn Tuấn Tú') THEM GIA TRI VAO BANG CTPXUAT-insert into CTPXUAT Values('X001','DD01',2,3500000) insert into CTPXUAT Values('X002','DD01',2,3500000) insert into CTPXUAT Values('X002','DD02',5,4900000) insert into CTPXUAT Values('X003','DD01',3,3500000) insert into CTPXUAT Values('X003','DD02',2,4900000) insert into CTPXUAT Values('X003','VD02',10,3250000) THEM GIA TRI VAO BANG TONKHO-insert into TONKHO Values(200601,'DD01',0,10,6,4) insert into TONKHO Values(200601,'DD02',0,15,7,8) insert into TONKHO Values(200601,'TV29',12,0,0,12) insert into TONKHO Values(200601,'VD02',0,30,10,20) insert into TONKHO Values(200602,'DD01',4,0,0,4) insert into TONKHO Values(200602,'DD02',8,0,0,8) insert into TONKHO Values(200602,'TV14',5,0,0,5) insert into TONKHO Values(200602,'VD01',20,0,0,20) insert into TONKHO Values(200603,'DD01',0,190,0,190) BÀI TẬP TRUY VẤN Thêm liệu vào bảng lệnh INSERT INTO Thêm cột tgnhap kiểu numeric vào bảng PNHAP alter table PNHAP add Tgnhap numeric Thêm cột tgxuat kiểu numeric vào bảng PXUAT alter table PXUAT add Tgxuat numeric Làm lại tất ví dụ cho lớp ví dụ yêu cầu phải làm mà chưa hồn tất, sau chuyển qua câu Cho biết thông tin sopn,mavtu, slgnhap, dgnhap, tien mavtu select sopn,mavtu, slnhap, dgnhap,slnhap*dgnhap as [thanh tien] from CTPNHAP Ngô Tất Đạt Page Thực Hành Hệ Quản Trị Cơ Sở Dữ Liệu(SQL SERVER) – 11 LT-TM Cho biết thông tin sopn,tenvatu, slnhap, dgnhap, tien mavtu select sopn,Tenvtu, slnhap, dgnhap,slnhap*dgnhap as [thanh tien] from CTPNHAP C,VATTU V where C.Mavtu=V.Mavtu Cho biết thông tin sopn,ngaynhap,mavtu, slgnhap, dgnhap, tien mavtu select P.Sopn,NgayNhap,Mavtu, Slnhap, Dgnhap,Slnhap*Dgnhap as [Thanh Tien] from CTPNHAP C,PNHAP P where C.Sopn=P.Sopn Cho biết thông tin sopn, ngaynhap, tên vật tư, slnhap, dgnhap, tien mavtu 01/2006 Yêu cầu ngày nhập có định dạng dd-mm-yyyy select P.Sopn,NgayNhap=convert(char(10),NgayNhap,103),Tenvtu, Slnhap, Dgnhap,Slnhap*Dgnhap as [Thanh Tien] from CTPNHAP C,PNHAP P, VATTU V where C.Sopn=P.Sopn and V.Mavtu = C.Mavtu and convert(char(7),NgayNhap,111)='2006/01' Cho biết thông tin sopx,mavtu, slgxuat, dgxuat, tien mavtu select Sopx,mavtu, Slxuat, Dgxuat,Slxuat*Dgxuat as [thanh tien] from CTPXUAT 10 Cho biết thông tin sopx,tenvattu, slgxuat, dgxuat, tien mavtu select Sopx,Tenvtu, Slxuat, Dgxuat,Slxuat*Dgxuat as [thanh tien] from CTPXUAT C, VATTU V where C.Mavtu=V.Mavtu 11 Cho biết thông tin sopx,ngayxuat,mavtu, slgxuat, dgxuat, tien mavtu select P.Sopx,Ngayxuat=convert(char(10),Ngayxuat,103),Mavtu, Slxuat, Dgxuat,Slxuat*Dgxuat as [thanh tien] from CTPXUAT C, PXUAT P where C.Sopx=P.Sopx 12 Cho biết thông tin sopx,ngayxuat,ten vật tư, slgxuat, dgxuat, tien mavtu từ ngày 15/01/2006 đến 03/03/2006.Yêu cầu ngày nhập có định dạng dd-mmyyyy Ngô Tất Đạt Page Thực Hành Hệ Quản Trị Cơ Sở Dữ Liệu(SQL SERVER) – 11 LT-TM select P.Sopx,Ngayxuat=convert(char(10),Ngayxuat,103),Tenvtu, Slxuat, Dgxuat,Slxuat*Dgxuat as [thanh tien] from CTPXUAT C, PXUAT P, VATTU V where C.Sopx=P.Sopx and V.Mavtu=C.Mavtu and Ngayxuat between '01/15/2006' and '03/03/2006' 13 Cập nhật cột tổng trị giá nhập(tgnhap) cho bảng PNHAP Trong tgnhap = (slnhap*dgnhap) bảng ctpnhap.Chỉ cập nhật cho SOPN N001,N002 update PNHAP set Tgnhap= ( select sum(Slnhap*Dgnhap) from CTPNHAP C where C.Sopn=PNHAP.Sopn ) where PNHAP.Sopn in ('N001','N002') 14 Cập nhật cột tổng trị giá nhập(tgnhap) cho bảng PNHAP Trong tgnhap = (slnhap*dgnhap) bảng ctpnhap.Chỉ cập nhật cho phiếu nhập tháng 02 update PNHAP set Tgnhap= ( select sum(Slnhap*Dgnhap) from CTPNHAP C where C.Sopn=PNHAP.Sopn ) where month(PNHAP.Ngaynhap)=2 15 Cập nhật cột tổng trị giá xuất(tgxuat) cho bảng PXUAT Trong tgxuat = (slxuat*dgxuat) bảng ctpxuat.Chỉ cập nhật cho SOPX X001 update PXUAT set Tgxuat= ( select sum(Slxuat*Dgxuat) from CTPXUAT C where C.Sopx=PXUAT.Sopx ) where PXUAT.Sopx = 'X001' 16 Cập nhật cột tổng trị giá xuất(tgxuất) cho bảng PXUAT Trong tgxuat = (slxuat*dgxuat) bảng ctpxuat.Chỉ cập nhật cho phiếu xuat năm 2006-01 Ngô Tất Đạt Page Thực Hành Hệ Quản Trị Cơ Sở Dữ Liệu(SQL SERVER) – 11 LT-TM update PXUAT set Tgxuat =( select sum(Slxuat*Dgxuat) from CTPXUAT C where C.Sopx = PXUAT.Sopx ) where convert(char(7),PXUAT.Ngayxuat,111)='2006/01' 17 Xoá mã vật tư có dvtinh „Bộ‟ delete from VATTU where dvitinh=N'Bộ' 18 Insert lại mẩu tin vừa bị xoá insert into VATTU values('DD01',N'Đầu Hitachi đĩa',N'Bộ',40) insert into VATTU values('DD02',N'Đầu Hitachi đĩa',N'Bộ',40) insert into VATTU values('KO02',N'Đầu Karaoke',N'Bộ',30) insert into VATTU values('KO04',N'Đầu Karaoke số',N'Bộ',30) insert into VATTU values('MH01',N'Máy hát sony đời IK-2002',N'Bộ',NULL) insert into VATTU values('VD01',N'Đầu VCD Sony đĩa',N'Bộ',30) insert into VATTU values('VD02',N'Đầu VCD Sony đĩa',N'Bộ',15) 19 Thể thông tin : mã vật tư, tên vật tư select Mavtu,Tenvtu from VATTU 20 Thể thông tin tất vật tư yêu cầu cột phần trăm có thêm kí tự „%‟ kèm select Mavtu,Tenvtu,Dvitinh,PhanTram=rtrim(cast(PhanTram as char(3)))+'%' from VATTU 21 Thể thơng tin khách hàng có tên chứa chữ „H‟ select * from NHACC where Tenncc like '%H%' 22 Cho biết thông tin sodh, ngaydh, tennhacc select Sodh,Ngaydh,Tenncc from DONDH D,NHACC N where N.Manhacc=D.Manhacc 23 Cho biết thông tin sodh, ngaydh, tennhacc Yêu cầu cột ngày đặt hàng thể theo dạng dd-mm-yyyy select Sodh,Ngaydh=convert(char(10),Ngaydh,103),Tenncc from DONDH D,NHACC N Ngô Tất Đạt Page 10 Thực Hành Hệ Quản Trị Cơ Sở Dữ Liệu(SQL SERVER) – 11 LT-TM create proc SPUD_PNHAP_TSLNHAP @SOPN char(5), @TSL_NHAP int output as if exists (select * from CTPNHAP where SOPN=@SOPN) begin select @TSL_NHAP=sum(SLNHAP) from CTPNHAP where SOPN=@SOPN end else print N' Khơng có phiếu nhập này' declare @SL int, @SOPN char(5) set @SOPN='N002' exec SPUD_PNHAP_TSLNHAP @SOPN,@TSL_NHAP=@SL output print N' Tổng số lượng nhập phiếu nhập '+@SOPN+N'là: '+cast(@SL as char(3)) 13 Xây dựng thủ tục cho biết tổng số lượng đặt nhập đơn hàng if exists ( select * from SYSOBJECTS where NAME='SPUD_DONDH_TSLDATNHAP') drop proc SPUD_DONDH_TSLDATNHAP go create proc SPUD_DONDH_TSLDATNHAP @SODH char(5), @TSL_DAT int output, @TSL_NHAP int output as if exists (select * from DONDH where SODH=@SODH) begin select @TSL_DAT=sum(SLDAT),@TSL_NHAP=( select sum(SLNHAP) from PNHAP P,CTPNHAP C where P.SOPN=C.SOPN and SODH=@SODH ) from CTDONDH where SODH=@SODH group by SODH end Ngô Tất Đạt Page 41 Thực Hành Hệ Quản Trị Cơ Sở Dữ Liệu(SQL SERVER) – 11 LT-TM else print N' Khơng có đơn đặt hàng này' declare @TSLD int,@TSLN int,@SODH char(5) set @SODH='D001' exec SPUD_DONDH_TSLDATNHAP @SODH,@TSL_DAT=@TSLD output,@TSL_NHAP=@TSLN output print N' Tổng số lượng đặt đơn đặt hàng '+@SODH+N'là: '+cast(@TSLD as char(3)) print N' Tổng số lượng nhập đơn đặt hàng '+@SODH+N'là: '+cast(@TSLN as char(3)) 14 Xây dựng thủ tục cho biết tổng số lượng nhập , tổng trị giá nhập từ ngày đến ngày if exists ( select * from SYSOBJECTS where NAME='SPUD_TSLNHAP_KHOANGTG') drop proc SPUD_TSLNHAP_KHOANGTG go create proc SPUD_TSLNHAP_KHOANGTG @TUNGAY datetime, @DENNGAY datetime, @TSL_NHAP int output, @TGT_NHAP int output as if exists (select * from PNHAP where NGAYNHAP between @TUNGAY and @DENNGAY) begin select @TSL_NHAP=sum(SLNHAP),@TGT_NHAP=sum(SLNHAP*DGNHAP) from PNHAP P,CTPNHAP C where P.SOPN=C.SOPN and NGAYNHAP between @TUNGAY and @DENNGAY end else print N' Khơng tìm thấy' declare @TUNGAY datetime,@DENNGAY datetime,@TSLN int,@TGTN int set @TUNGAY='01/01/2006' set @DENNGAY='02/25/2006' exec SPUD_TSLNHAP_KHOANGTG @TUNGAY,@DENNGAY,@TSL_NHAP=@TSLN output,@TGT_NHAP = @TGTN output Ngô Tất Đạt Page 42 Thực Hành Hệ Quản Trị Cơ Sở Dữ Liệu(SQL SERVER) – 11 LT-TM print N' Tổng số lượng nhập từ ngày '+convert(char(10),@TUNGAY,103)+N' đến ngày '+ convert(char(10),@DENNGAY,103)+N'là: ' +cast(@TSLN as char(3)) print N' Tổng giá trị nhập từ ngày '+convert(char(10),@TUNGAY,103)+N' đến ngày '+ convert(char(10),@DENNGAY,103)+N'là: ' +cast(@TGTN as char(12)) 15 Xây thủ tục biết đơn hàng nhập đủ hàng if exists ( select * from SYSOBJECTS where NAME='SPUD_DONDH_NHAPDAYDU') drop proc SPUD_DONDH_NHAPDAYDU go create proc SPUD_DONDH_NHAPDAYDU @SODH char(5) output as if exists (select * from CTDONDH C,PNHAP P where C.SODH=P.SODH) begin select @SODH = SODH from DONDH D where (select sum(SLDAT)from CTDONDH CT where D.SODH=CT.SODH)= (select sum(SLNHAP) from PNHAP P,CTPNHAP C where D.SODH=P.SODH and P.SOPN=C.SOPN) end else print N' Khơng tìm thấy ' declare @SODH char(5) exec SPUD_DONDH_NHAPDAYDU @SODH=@SODH output print N' Những đơn hàng nhập đủ hàng: '+ @SODH 16 Xây dựng thủ tục biết thông tin sodh,ngaydh,mavtu,tenvtu,tổng sldat,tổng slnhập if exists ( select * from SYSOBJECTS where NAME='SPUD_SODH_SLDAT_TSLNHAP') drop proc SPUD_SODH_SLDAT_TSLNHAP go create proc SPUD_SODH_SLDAT_TSLNHAP as select D.SODH,NGAYDH,V.MAVTU,TENVTU,SLDAT,TSL_NHAP = ( select sum(Slnhap) from PNHAP P,CTPNHAP CT Ngô Tất Đạt Page 43 Thực Hành Hệ Quản Trị Cơ Sở Dữ Liệu(SQL SERVER) – 11 LT-TM where P.SOPN=CT.SOPN and D.SODH=P.SODH and V.MAVTU=CT.MAVTU ) from DONDH D,CTDONDH C,VATTU V where D.SODH=C.SODH and C.MAVTU=V.MAVTU exec SPUD_SODH_SLDAT_TSLNHAP 17 Xây dựng thủ tục cho biết thông tin số lượng chênh lệch đơn đặt hàng if exists ( select * from SYSOBJECTS where NAME='SPUD_DONDH_SLCHENH') drop proc SPUD_DONDH_SLCHENH go create proc SPUD_DONDH_SLCHENH @SODH char(5), @SL_CHENHLECH int output as if exists (select * from DONDH where SODH=@SODH) begin select @SL_CHENHLECH = sum(SLDAT)- ( select sum(SLNHAP) from PNHAP P,CTPNHAP C where P.SOPN=C.SOPN and SODH=@SODH ) from CTDONDH where SODH=@SODH group by SODH end else print N' Khơng có đơn đặt hàng này' declare @SLCL int,@SODH char(5) set @SODH='D001' exec SPUD_DONDH_SLCHENH @SODH,@SL_CHENHLECH=@SLCL output print N' Số lượng chênh lệch đơn đặt hàng '+@SODH+N'là: '+cast(@SLCL as char(3)) 18 Xây dựng thủ tục tính số lượng đặt hàng với tên spud_DONDH_TinhSLDAT gồm tham số vào : số đặt hàng Ngô Tất Đạt Page 44 Thực Hành Hệ Quản Trị Cơ Sở Dữ Liệu(SQL SERVER) – 11 LT-TM mã vật tư, tham số : số lượng đặt hàng vật tư có mã với mã vật tư truyền vào số đặt hàng với số đặt hàng truyền vào if exists ( select * from SYSOBJECTS where NAME='SPUD_DONDH_TINHSLDAT') drop proc SPUD_DONDH_TINHSLDAT go create proc SPUD_DONDH_TINHSLDAT @SODH char(5), @MAVT char(5), @SLDAT int output as if exists (select * from CTDONDH where SODH=@SODH) begin if exists (select * from CTDONDH where MAVTU=@MAVT) begin select @SLDAT=SLDAT from CTDONDH where SODH=@SODH and MAVTU=@MAVT end else print N' Đơn đặt hàng ' +@SODH+ N'chưa đặt hàng cho vật tư '+@MAVT end else print N' Khơng có đơn đặt hàng này' declare @SL int,@SODH char(5),@MAVT char(5) set @SODH='D001' set @MAVT = 'DD02' exec SPUD_DONDH_TINHSLDAT @SODH,@MAVT,@SLDAT=@SL output print N' Số lượng đặt đơn hàng '+@SODH+N'đối với vật tư '+@MAVT+N'là: '+cast(@SL as char(3)) 19 XÂY dựng thủ tục cho biết số lượng tồn kho vật tư (ton kho = tong nhap – tong xuat) if exists ( select * from SYSOBJECTS where NAME='SPUD_VATTU_SLTON') drop proc SPUD_VATTU_SLTON go create proc SPUD_VATTU_SLTON @MAVT char(5), @SLTON int output as Ngô Tất Đạt Page 45 Thực Hành Hệ Quản Trị Cơ Sở Dữ Liệu(SQL SERVER) – 11 LT-TM if exists (select * from CTPNHAP where MAVTU=@MAVT) begin select @SLTON=sum(SLNHAP) - ( select sum(SLXUAT) from CTPXUAT CT where V.MAVTU=CT.MAVTU ) from VATTU V,CTPNHAP C where C.MAVTU=V.MAVTU and V.MAVTU=@MAVT group by V.MAVTU,TENVTU end else print N' Khơng tìm thấy' declare @MAVT char(5),@SLT int set @MAVT='DD01' exec SPUD_VATTU_SLTON @MAVT,@SLTON=@SLT output print N' Số lượng tồn kho vật tư '+@MAVT+N'là: '+ cast(@SLT as char(4)) 20 Xây dựng thủ tục cho biết số lượng tồn vật tư theo năm tháng if exists ( select * from SYSOBJECTS where NAME='SPUD_VATTU_SLTON_NAMTHANG') drop proc SPUD_VATTU_SLTON_NAMTHANG go create proc SPUD_VATTU_SLTON_NAMTHANG as if exists (select * from CTPNHAP) begin select V.MAVTU,TENVTU,NAMTHANG=convert(char(7),NGAYNHAP,111), SLTON = sum(SLNHAP)-(select sum(SLXUAT) from CTPXUAT CT, PXUAT PX where V.MAVTU=CT.MAVTU and PX.SOPX=CT.SOPX and convert(char(7),NGAYNHAP,111)=convert(char(7),NGAYXUAT,111) group by convert(char(7),NGAYXUAT,111) ) from VATTU V,CTPNHAP C,PNHAP P where C.MAVTU=V.MAVTU and P.SOPN=C.SOPN group by convert(char(7),NGAYNHAP,111),V.MAVTU,TENVTU order by convert(char(7),NGAYNHAP,111) end Ngô Tất Đạt Page 46 Thực Hành Hệ Quản Trị Cơ Sở Dữ Liệu(SQL SERVER) – 11 LT-TM else print N' Khơng tìm thấy' exec SPUD_VATTU_SLTON_NAMTHANG /* 21 Xây dựng thủ tục tính tổng số lượng nhập tổng số lượng xuất vật tư với tên spud_TONKHO_TinhtongNX gồm có tham số vào : Năm tháng mã vật tư, tham số : tổng số lượng nhập tổng số lượng xuất vật tư theo năm tháng truyền vào ý : không dùng bảng TONKHO */ if exists (select * from SYSOBJECTS where name='SPUD_TONKHO_TINHTONGNX') drop proc SPUD_TONKHO_TINHTONGNX go create proc SPUD_TONKHO_TINHTONGNX @NAMTHANG char(7), @MAVT char(5), @TSL_NHAP int output, @TSL_XUAT int output as begin if exists (select * from PNHAP P,CTPNHAP C where P.SOPN=C.SOPN and convert(char(7),NGAYNHAP,111)=@NAMTHANG and MAVTU=@MAVT) begin select @TSL_NHAP=sum(SLNHAP) from PNHAP P,CTPNHAP C where P.SOPN=C.SOPN and convert(char(7),NGAYNHAP,111)=@NAMTHANG and MAVTU=@MAVT end else set @TSL_NHAP=0 if exists (select * from PXUAT P,CTPXUAT C where P.SOPX=C.SOPX and convert(char(7),NGAYXUAT,111)=@NAMTHANG and MAVTU=@MAVT) begin select @TSL_XUAT=sum(SLXUAT) from PXUAT P,CTPXUAT C where P.SOPX=C.SOPX and convert(char(7),NGAYXUAT,111)=@NAMTHANG and MAVTU=@MAVT end Ngô Tất Đạt Page 47 Thực Hành Hệ Quản Trị Cơ Sở Dữ Liệu(SQL SERVER) – 11 LT-TM else set @TSL_XUAT=0 end declare @NAMTHANG char(7),@MAVTU char(5),@TSLN int,@TSLX int set @NAMTHANG='2006/01' set @MAVTU='DD01' exec SPUD_TONKHO_TINHTONGNX @NAMTHANG,@MAVTU,@TSL_NHAP=@TSLN output,@TSL_XUAT=@TSLX output print N' Năm tháng: '+@NAMTHANG print N' Vật tư: '+@MAVTU print N' Tổng số lượng nhập: '+cast(@TSLN as char(5)) print N' Tổng số lượng xuất: '+cast(@TSLX as char(5)) /* 22 Trong csdl quản lý bán hàng , tạo thủ tục nội cập nhật liệu bảng VATTU Các thủ tục có kiểm tra ràng buộc liệu thông báo lỗi rõ ràng liệu vi phạm ràng buộc */ if exists (select * from SYSOBJECTS where name='SPUD_VATTU_KTRA_CAPNHAT') drop proc SPUD_VATTU_KTRA_CAPNHAT go create proc SPUD_VATTU_KTRA_CAPNHAT @MAVT char(5), @TENVT nchar(30), @DVT nchar(10), @PHANTRAM int as if exists(select * from VATTU where MAVTU=@MAVT) if not exists(select * from VATTU where TENVTU=@TENVT) if (@PHANTRAM between and 100) update VATTU set TENVTU=@TENVT,DVITINH=@DVT,PHANTRAM=@PHANTRAM where MAVTU=@MAVT else print N' Phần trăm phải từ 0->100' else print N' Tên vật tư bị trùng' else print N' Vật tư '+@MAVT+N'không tồn bảng VATTU, nên ko thể cập nhật ' Ngô Tất Đạt Page 48 Thực Hành Hệ Quản Trị Cơ Sở Dữ Liệu(SQL SERVER) – 11 LT-TM declare @MAVTU char(5),@TENVTU nchar(30),@DVTINH nchar(10),@PT int set @MAVTU='DD91' set @TENVTU=N'Đầu Hitachi đĩa' set @DVTINH=N'Bộ' set @PT=110 alter table VATTU nocheck constraint all exec SPUD_VATTU_KTRA_CAPNHAT @MAVTU,@TENVTU,@DVTINH,@PT /* 23 Xây dựng thủ tục thêm liệu vào bảng VATTU với tên spud_VATTU_Them gồm có tham số vào giá trị thêm cho cột bảng VATTU: mã vật tư, tên vật tư, đơn vị tính, phần trăm Trong cần kiểm tra ràng buộc liệu phải hợp lệ trước thực lệnh INSERT INTO để thêm vào bảng VATTU a Mã vật tư phải chưa có bảng vật tư b Tên vật tư phải bảng vật tư c

Ngày đăng: 08/05/2014, 17:30

TỪ KHÓA LIÊN QUAN

w