AnNguyen > 03-01-20, 05:47 PM
INSERT INTO [Steame-KT].dbo.[tbPhatSinhNo](matp,mahs)
select matp,mahs
from tbPhatSinhNo where madv IN ('IDT029','ITP001') and mahs=@mahs
FUNCTION [dbo].[TaoMaThuPhi]
(
@mahs varchar(15) -- Kiểm tra xem muốn check dữ liệu bên nào
)
ongke0711 > 03-01-20, 09:54 PM
AnNguyen > 06-01-20, 09:09 AM
(03-01-20, 09:54 PM)ongke0711 Đã viết: Tại sao không chọn cách chỉ Insert dữ liệu còn ID bảng đích thì để chạy tự động, khỏi phải tốn code, tốn tài nguyên máy khi chạy?
ongke0711 > 06-01-20, 03:47 PM
AnNguyen > 07-01-20, 09:10 AM
(06-01-20, 03:47 PM)ongke0711 Đã viết: Nguyên tắc là dùng Function trong các câu lệnh Inser...Select là bình thường. Chỉ có vấn đề cần xem xét là cái function đó hoạt động như thế nào? dựa trên các field mới vừa tổng hợp trong câu lệnh Select hay sao?
Em đưa rõ code cái function đó xem như thế nào.
/****** Tạo mã thông báo phí ******/
ALTER FUNCTION [dbo].[TaoMaThuPhi]
(
@mahs varchar(15), @data char(4) -- Kiểm tra xem muốn check dữ liệu bên nào
)
RETURNS varchar(20)
AS
BEGIN
DECLARE @kq varchar(20)
DECLARE @soTT int
IF @data='CSKH'
set @kq=(select max(matp) from tbPhatSinhNo where matp LIKE '%' + @mahs + '-%') -- Phải có dấu - vì tìm trong text 09 sẽ to hơn 10
IF @data='KT'
set @kq=(select max(matp) from [Steame-KT].dbo.[tbPhatSinhNo] where matp LIKE '%' + @mahs + '-%') -- Phải có dấu - vì tìm trong text 09 sẽ to hơn 10
IF (@kq<>'') -- Nếu kq có tìm thấy
begin
set @soTT= RIGHT(@kq,4) +1
set @kq=@mahs + '-' + cast( @soTT as varchar(5))
end
else -- Ngược lại là k tìm thấy sẽ tự gán là 1
set @kq=@mahs + '-1001'
RETURN @kq
END
ongke0711 > 09-01-20, 11:02 PM
(03-01-20, 05:47 PM)AnNguyen Đã viết: em đã có 1 đoạn code để làm điều này nhưng khi lưu theo kiểu duyệt từng dòng thì ok ạ, còn kiểu insert select thì không ạ.
AnNguyen > 13-01-20, 07:34 PM