PDA

View Full Version : cách chèn nhiều hàng vào 1 bản



DeviL_OfHelL
13-03-2012, 00:58
hiện tại mình đang làm cơ sở dữ liệu cho bài đồ án của mình hiện tại mình có hai bản csdl thế này
bảng 1: sở hữu cổ phiếu chờ SoHuuCPCho(IDCho,SoLuong,Date,MaTk,MaCP) bảng thứ hai sở hữu cổ phiếu SoHuuCP(SoLuong,MaTk,MaCP)
- mình mún sau khi có cơ sở dữ liệu trong bảng SoHuuCPCho thì sẽ chèn csdl gồm số
lượng(SoLuong) , mã tài khoản(MaTk), mã cổ phiếu(MaCP) vào table
SoHuuCP(SoLuong,MaTk,MaCP)
-yêu cầu 1: nếu bên table SoHuuCP chưa hàng nào có MaTk và MaCP nào giống bên table
SoHuuCPCho
hoặc table SoHuuCP có hàng chỉ giống MaTK hoặc giống MaCP
thì sẽ chèn 1 hàng mới
-nếu 2 bên table giống nhau thì sẽ cộng thêm số lượng(SoLuong) vào table
SoHuuCP(SoLuong,MaTk,MaCP)
yêu cầu 2: và việc update csdl giữa hai bảng này được thực hiện vào 1 giờ
nhất định trong ngày
cách giải quyết vấn đề của mình như thế này
thứ nhất viết 1 thủ tục để giải quyết yêu cầu 1:
create procedure SHCmoveSH
@MaTK int,
@MaCP char(3)
AS
Begin
declare @SoLuongsh int
declare @soluongshcho int
select @soluongshcho=SoLuong from SoHuuCPCho where MaTK=@MaTK and
MaCP=@MaCP
select @SoLuongsh=SoLuong from SoHuuCP where MaTK=@MaTK and
MaCP=@MaCP
update SoHuuCP set SoLuong=@SoLuongsh + @soluongshcho where
MaTK=@MaTK and MaCP=@MaCP
if @@rowcount != 1
begin
select @soluongshcho=SoLuong,@MaTK=MaTK,@MaCP=MaCP from SoHuuCPCho
where MaTK=@MaTK and MaCP=@MaCP
insert into SoHuuCP(SoLuong,MaTK,MaCP)
values(@soluongshcho,@MaTK,@MaCP)
end
End

sau khi làm và test thử yêu cầu 1 đã hoàn chỉnh( test bằng tay) mình chuyển sang giải quyết yêu cầu thứ 2 bằng cách tạo job để nó thực hiện công việc hàng ngày
ở phần steps đoạn command mình viết như sau
declare @MaTK int
declare @MaCP char(3)
select @MaTK=MaTK,@MaCP=MaCP from SoHuuCPCho
exec SHCmoveSH @MaTK ,@MaCP

và nó thực hiện thành công nhưng nó chỉ làm việc với 1 hàng bên table SoHuuCho để update qua table SoHuuCP . mình mún nó chèn 1 lúc nhiều hàng bên table SoHuuCho qua table SoHuuCP thì mình nên làm thế nào .mong các pro giúp đỡ tuy hơi có dài dòng nhưng mình hy vọng sẽ có bạn chụi khó đọc và giúp mình hay đưa ra hướng giải quyết cũng được .thanks all ý kiến đóng gióp
hiện tại minh đang có 2 lồng suy nghĩ là xử lý thủ tục theo hướng con trỏ(đã test nhưng job ko chạy được mặc dù thủ tục đúng) hoặc là sửa lại command bên job

timviecinfo1
13-03-2012, 01:12
Bạn có thể send mình file sql, mình cần phải test thử mới giúp được bạn

DeviL_OfHelL
13-03-2012, 01:21
bạn có thể cho mình nick yahoo để thuận tiện trao dổi không bạn.thanks bạn