Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 13

TRUY VẤN

- Thêm mới thông tin nhân viên

create proc proc_Themnhanvien


@manhanvien varchar(20),
@hoten nvarchar(50),
@ngaysinh date,
@quequan nvarchar(255),
@gioitinh nvarchar(50) ,
@SoDienThoai nvarchar(50),
@So_CCCD nvarchar(50),
@ThoiGianBatDauLamViec date,
@HanHopDong date,
@MaBoPhan varchar(20),
@MaCuaHang nvarchar(20),
@ketqua nvarchar(50) output
as
begin
begin try
if(exists(select * from Thong_Tin_Nhan_Vien where MaNhanVien=
@manhanvien))
begin
set @ketqua = N'ma nhan vien da ton tai'
return
end

insert into
Thong_Tin_Nhan_Vien(MaNhanVien,HoTen,NgaySinh,QueQuan,GioiTinh,SoDienThoai
,So_CCCD,ThoiGianBatDauLamViec,HanHopDong,MaBoPhan,MaCuaHang)
values
(@manhanvien,@hoten,@ngaysinh,@quequan,@gioitinh,@SoDienThoai,@So_CCCD,
@ThoiGianBatDauLamViec,@HanHopDong,@MaBoPhan,@MaCuaHang)
set @ketqua =' '
end try
begin catch
set @ketqua = 'Loi, them moi khong thanh cong'
end catch
end

- Cập nhật thông tin nhân viên

create proc proc_NhanVien_Update


@manhanvien varchar(20),
@hoten nvarchar(50),
@ngaysinh date,
@quequan nvarchar(255),
@gioitinh nvarchar(50) ,
@SoDienThoai nvarchar(50),
@So_CCCD nvarchar(50),
@ThoiGianBatDauLamViec date,
@HanHopDong date,
@MaBoPhan varchar(20),
@MaCuaHang nvarchar(20),
@ketqua nvarchar(50) output
as
if(not exists(select *from Thong_Tin_Nhan_Vien where MaNhanVien=
@manhanvien))
set @ketqua = N' Không tồn tại mã nhân viên này để cập nhật!'
else
begin
update Thong_Tin_Nhan_Vien
set MaNhanVien=@manhanvien
,HoTen=@hoten
,NgaySinh=@ngaysinh
,QueQuan=@quequan
,GioiTinh=@gioitinh
,SoDienThoai=@SoDienThoai
,So_CCCD=@So_CCCD
,ThoiGianBatDauLamViec=@ThoiGianBatDauLamViec
,HanHopDong=@HanHopDong
,MaBoPhan=@MaBoPhan
,MaCuaHang=@MaCuaHang
where MaNhanVien = @manhanvien

if(@@ERROR<>0)
set @ketqua = N' Lỗi. Cập nhật không thành công!'
else
set @ketqua = N 'Cập nhật thành công!'
end

- xóa thông tin nhân viên

if exists (select *from sys.objects where name = 'proc_XoaNhanVien_Delete')


drop procedure proc_XoaNhanVien_Delete
go
create proc proc_XoaNhanVien_Delete
@manhanvien varchar(20),
@hoten nvarchar(50),
@ngaysinh date,
@quequan nvarchar(255),
@gioitinh nvarchar(50) ,
@SoDienThoai nvarchar(50),
@So_CCCD nvarchar(50),
@ThoiGianBatDauLamViec date,
@HanHopDong date,
@MaBoPhan varchar(20),
@MaCuaHang nvarchar(20),
@ketqua nvarchar(50) output
as
begin
begin try
if not exists(select * from Thong_Tin_Nhan_Vien where MaNhanVien=
@manhanvien)
begin
set @ketqua = N'Ma nhan vien khong ton tai'
return
end
DELETE from Thong_Tin_Nhan_Vien
where MaNhanVien = @manhanvien
set @ketqua =N' Da xoa thanh cong'
end try
begin catch
set @ketqua = 'Loi, xoa nhan vien khong thanh cong'
end catch
end
GO

- thêm ca làm việc của nhân viên

create proc sp_caLamViec_insert

@tg_batdauca datetime,

@tg_ketthuca datetime,

@check_in datetime,

@check_out datetime,

@manhanvien varchar(20),

@ghichu nvarchar(255),

@tg_lam int,

@ketqua nvarchar(50) output

as

if (exists (select * from Quan_Ly_Ca_Lam_Viec where MaNhanVien


=@MaNhanvien))

set @ketqua=N' đã tồn tại'

else

begin

insert
into(TG_BatDauCa,TG_KetThucCa,Check_in,Check_out,MaNhanVien,GhiChu,TG_Lam)

values(@tg_batdauca ,@tg_ketthuca ,@check_in ,@check_out


,@manhanvien,@ghichu,

@tg_lam)

if(@@ERROR<>0)

set @ketqua =N' Không thêm mới được'

else

set @ketqua=N' Thêm thành công'

end
- cập nhật ca làm việc của nhân viên

create proc sp_caLamViec_update

@tg_batdauca datetime,

@tg_ketthuca datetime,

@check_in datetime,

@check_out datetime,

@manhanvien varchar(20),

@ghichu nvarchar(255),

@tg_lam int,

@ketqua nvarchar(50) output

as

if (not exists (select * from Quan_Ly_Ca_Lam_Viec where MaNhanVien


=@MaNhanvien))

set @ketqua=N' không tồn tại'

else

begin

update Quan_Ly_Ca_Lam_Viec

set TG_BatDauCa=@tg_batdauca

,TG_KetThucCa=@tg_ketthuca

,Check_in=@check_in

,Check_out=@check_out

,MaNhanVien=@manhanvien

,GhiChu=@ghichu

,TG_Lam=@tg_lam

where MaNhanVien=@manhanvien and TG_BatDauCa=@tg_batdauca and


TG_KetThucCa=@tg_ketthuca

if(@@ERROR<>0)

set @ketqua =N' Không cập nhật được'

else
set @ketqua=N' cập nhật thành công'

end

- xóa ca làm việc của nhân viên

create proc sp_caLamViec_delete

@tg_batdauca datetime,

@tg_ketthuca datetime,

@check_in datetime,

@check_out datetime,

@manhanvien varchar(20),

@ghichu nvarchar(255),

@tg_lam int,

@ketqua nvarchar(50) output

as

if (not exists (select * from Quan_Ly_Ca_Lam_Viec where MaNhanVien


=@MaNhanvien))

set @ketqua=N' không tồn tại'

else

begin

delete from Quan_Ly_Ca_Lam_Viec

where MaNhanVien =@MaNhanvien

and TG_BatDauCa=@tg_batdauca

and TG_KetThucCa=@tg_ketthuca

if(@@ERROR<>0)

set @ketqua =N' Không xóa được'

else

set @ketqua=N' xóa thành công'

end

- Thêm mới dữ liệu vào bảng Menu

create proc sp_Menu_insert

@masanpham varchar(20),

@tensanpham nvarchar(255),

@gia money,

@muacuahang varchar(10),

@hinhthucchebien nvarchar(50),

@ketqua nvarchar(50) output

as

if (exists (select MaSanPham from Menu where MaSanPham =


@masanpham))

set @ketqua='Da ton tai'

else

begin try

insert Menu

values
(@mamonan,@tenmonan,@gia,@muacuahang,@hinhthucchebien)

end try

begin catch

if(@@ERROR<>0)

set @ketqua='them moi thanh cong'

else

set @ketqua='them moi khong thanh cong'

end catch

- Dừng bán sản phẩm trong menu


create proc sp_Menu_delete

@masanpham varchar(20) ,

@ketqua nvarchar(255) output

as

if(not exists (select MaSanPham from Menu where MaSanPham =


@masanpham))

set @ketqua = N'không tìm thấy mã'

else

begin

delete from Menu

where MaSanPham = @masanpham

if(@@ERROR <> 0)

set @ketqua = N'lỗi'

else

set @ketqua =''

end

- Cập nhật sản phẩm trong menu

create proc sp_Menu_Update

@masanpham varchar(20),

@tensanpham nvarchar(255),

@gia money,

@muacuahang varchar(10),

@hinhthucchebien nvarchar(50),

@ketqua nvarchar(250) output

as

if(not exists(select MaSanPham from Menu where MaSanPham =


@masanpham))

set @ketqua='Khong ton tai san pham nay'


else

begin try

Update Menu

set

TenSanPham = @tensanpham,

Gia = @gia,

MaCuaHang = @muacuahang,

HinhThucCheBien = @hinhthucchebien,

where MaSanPham = @masanpham

end try

begin catch

if(@@ERROR<>0)

set @ketqua='Cap nhat khong thanh cong'

else

set @ketqua=''

end catch

- Chức năng thêm/cập nhật/xóa thông tin khách hàng

create proc sp_KhachHang_insert

@makhachhang varchar(20),

@tenkhachhang nvarchar(50),

@diachi nvarchar(255),

@sodienthoai nvarchar(50),

@doituong nvarchar(50),

@ketqua nvarchar(250) output

as

if (exists (select MaKhachHang from Khach_Hang where MaKhachHang =


@makhachhang))

set @ketqua='Da ton tai'

else
begin try

insert Khach_Hang

values
(@makhachhang,@tenkhachhang,@diachi,@sodienthoai,@doituong)

end try

begin catch

if(@@ERROR<>0)

set @ketqua='them moi thanh cong'

else

set @ketqua='them moi khong thanh cong'

end catch

--

create proc sp_KhachHang_delete

@makhachhang varchar(20) ,

@ketqua nvarchar(255) output

as

if(not exists (select MaKhachHang from Khach_Hang where MaKhachHang =


@makhachhang))

set @ketqua = N'không tìm thấy mã'

else

begin

delete from Khach_Hang

where MaKhachHang = @makhachhang

if(@@ERROR <> 0)

set @ketqua = N'lỗi'

else

set @ketqua =''

end
--

create proc sp_KhachHang_Update

@makhachhang varchar(20),

@tenkhachhang nvarchar(50),

@diachi nvarchar(255),

@sodienthoai nvarchar(50),

@doituong nvarchar(50),

@ketqua nvarchar(250) output

as

if(not exists(select MaKhachHang from Khach_Hang where MaKhachHang =


@makhachhang))

set @ketqua='Khong ton tai khach hang nay'

else

begin try

Update Khach_Hang

set

TenKhachHang = @tenkhachhang ,

DiaChi = @diachi,

SoDienThoai = @sodienthoai,

DoiTuong = @doituong,

where MaKhachHang = @makhachhang

end try

begin catch

if(@@ERROR<>0)

set @ketqua='Cap nhat khong thanh cong'

else

set @ketqua=''

end catch

- Nhập hàng

*Thêm mới nguyên liệu

create proc Them_Nguyen_Vat_Lieu


@manguyenlieu varchar(20),
@tennguyenlieu nvarchar(255),
@soluong int,
@gia money
as
insert into Nguyen_Lieu(MaNguyenLieu, TenNguyenLieu, SoLuong, Gia)

values(@manguyenlieu, @tennguyenlieu, @soluong, @gia)

*Bô sung nguyên liệu

create proc sp_BoSung_SoLuong_KHO


@manguyenlieu varchar(20),
@soluong int,
@ketqua nvarchar(50) output
as
if ( not exists(select * from Nguyen_Lieu where MaNguyenLieu =
@manguyenlieu))
set @ketqua = N'Nguyen lieu không tồn tại'
else
begin
update Nguyen_Lieu
set SoLuong =SoLuong + @soluong
where MaNguyenLieu = @manguyenlieu
--
if @@ERROR <>0
set @ketqua = N'Lỗi '
else
set @ketqua = ''
end

- Cập nhật nguyên liệu

*Cách 1

create trigger trigger_CapNhat_SoLuong_KHO


on Nguyen_Lieu
for update
as
if(UPDATE(SL))
update Nguyen_Lieu
set Nguyen_Lieu.SoLuong = Nguyen_Lieu.SoLuong + deleted.SoLuong
- inserted.SoLuong
from Nguyen_Lieu.SoLuong inner join inserted
on Nguyen_Lieu.MaNguyenLieu = inserted.MaNguyenLieu inner join
deleted
on Nguyen_Lieu.MaNguyenLieu = deleted.MaNguyenLieu
*Cách 2

create proc sp_CapNhat_SoLuong_KHO


@manguyenlieu varchar(20),
@tennguyenlieu nvarchar(255),
@soluong int,
@gia money
@ketqua nvarchar(50) output
as
if ( not exists(select * from Nguyen_Lieu where MaNguyenLieu =
@manguyenlieu))
set @ketqua = N'Nguyen lieu không tồn tại'
else
begin
update Nguyen_Lieu
set TenNguyenLieu = @tennguyenlieu,
SoLuong = @soluong,
Gia = @gia
where MaNguyenLieu = @manguyenlieu
--
if @@ERROR <>0
set @ketqua = N'Lỗi cập nhật'
else
set @ketqua = ''
end

- Tìm kiếm cửa hàng

--Tim kiem
if exists (select *from sys.objects where name = 'proc_CuaHang_TimKiem')
drop procedure proc_CuaHang_TimKiem
go

create procedure proc_CuaHang_TimKiem


@Trang int = 1,
@SoDongMoiTrang int = 20,
@TenCuaHang nvarchar(50) = N'',
@SoLuong int output
as
begin
set nocount on;
declare @offset int,
@startRow int,
@endRow int
set @offset = (@trang - 1) * @SoDongMoiTrang
set @startRow = @offset + 1
set @endRow = @offset + @SoDongMoiTrang
select ROW_NUMBER() over (order by MaCuaHang) as rowNum, *
into #temp
from Cua_Hang
where TenCuaHang = '' or TenCuaHang like '%' + @TenCuaHang + '%'
set @SoLuong = @@ROWCOUNT
select *
from #temp
where rowNum between @startRow and @endRow
end
go

- Báo cáo doanh thu theo ngày, tháng, quý hoặc năm

-- Bao bao doanh thu


if exists (select *from sys.objects where name = 'func_BaoCaoDoanhThu')
drop function func_BaoCaoDoanhThu
go

create function func_BaoCaoDoanhThu(@TuNam int, @DenNam int)


returns @tbl table
(
NamThucHien int,
TongDoanhThu money
)
as
begin

declare @tmp int = @TuNam;


with cte_Nam as (
select @tmp as Nam
UNION ALL

select Nam + 1
from cte_Nam
where Nam < @DenNam
), cte_BaoCao as (
select YEAR(NgayGioVao) as NamThucHien, sum(Menu.Gia +
Chi_Tiet_Hoa_Don.SoLuong) as TongDoanhThu
from Hoa_Don,Chi_Tiet_Hoa_Don,Menu
where YEAR(NgayGioVao) between @TuNam and @DenNam
group by YEAR(NgayGioVao)
)
insert into @tbl (NamThucHien,TongDoanhThu)
select t1.Nam as NamThucHien, ISNULL(t2.TongDoanhThu,0) as TongDoanhThu
from cte_Nam as t1 left join cte_BaoCao as t2 on t1.Nam = t2.NamThucHien
return;
end
go

select *from dbo.func_BaoCaoDoanhThu(2023,2026)

You might also like