Trước hết cảm ơn các bro đã chỉ giúp. Bài này mình sửa được rồi.
Do viết cái store không đúng với thiết kế ban đầu.

Ban đầu có cái store chạy dùng cursor để duyệt sau đó viết thêm cái mới lại dùng lại cái store cũ mà không xem lại thiết kế

. Mình đã sửa lại code và truyền thêm tham số vào. Ban đầu duyệt sẽ dùng cái store có sử dụng cursor để duyệt lấy ra từng dòng tin và truy vấn lại sử dụng cái store procedure thông tin nhân sự này.
Còn khi truy vấn view thông tin chi tiết sẽ phải truyền tham số là Mã nhân viên vào khi người dùng click chọn muốn xem nhân viên nào đó.
Đã test lại trong mạng nội bộ và kết quả OK.
Mình cũng có góp ý với bạn thế này. Sở dĩ mình dùng truy vấn lồng bởi nếu như khi có giá trị NULL chưa nhập liệu đủ, chảng hạn như có nhân viên có ở trong tổ nghiệp vụ này, có nhân viên không nằm trong một tổ nghiệp vụ nào thì khi đó giá trị mã tổ sẽ là null. Và khi ta kết các bảng dữ liệu lại với nhau thì kết quả sẽ không ra được giá trị vì khi kết null sẽ vẫn là null. Tuy nhiên cách của bạn dùng cũng sẽ đảm bảo được các value phải luôn khác null. Thanks bạn một lần nữa.
flyingfox wrote:bạn nên viết stored procedure lại như sau:
- Code: Chọn hết
CREATE proc [dbo].[sp_viewnhansu]
as begin
Select a.MaNV, a.HotenDem + ' ' + a.Ten as HoTen, a.Gioitinh, a.NgaySinh, a.CMND,
b.TenTo as TenTo,
c.TenPhong as TenPhong,
d.TenChucVu as TenChucVu,
e.TenDT as TenDT,
f.TenQT as TenQT,
g.TenTG as TenTG,
h.TenNgach as TenNgach,
l.TenChucDanh as TenChucDanh,
k.TenPCK as TenPCK
From NhanSu a
Left Join DMToNghiepVu b ON a.MaTo = b.MaTo
Left Join DMPhong c ON a.MaPhong = c.MaPhong
Left Join DMChucVu d ON a.MaChucVu = d.MaChucVu
Left Join DMDanToc e ON a.MaDT = e.MaDT
Left Join DMQuocTich f ON a.MaQT = f.MaQT
Left Join DMTonGiao g ON a.MaTG = g.MaTG
Left Join DMNgach h ON a.MaNgach = h.MaNgach
Left Join DMChucDanh l ON a.MaCV = l.MaCV
Left Join DMPhucapkhac k ON a.MaPCK = k.MaPCK
end