日期:2014-05-17 浏览次数:20453 次
update b set 单位编号 = a.单位编号 , 是否已读 = '未读' from b , a where b.卡号 = a.卡号 update a set 接收日期 = getdate() from a , b where a.卡号 = b.卡号
------解决方案--------------------
SET NOCOUNT ON IF OBJECT_ID('TA')IS NOT NULL DROP TABLE TA GO CREATE TABLE TA(发送单位编号 VARCHAR(10),接收单位编号 VARCHAR(10),卡号 VARCHAR(10),是否已接收 NVARCHAR(10),接收日期 DATETIME) ----------------------------- INSERT TA SELECT '0005' , '0001', '50001' , N'未接收', NULL INSERT TA SELECT '0006' , '0001' , '50002' , N'未接收' , NULL INSERT TA SELECT '0007' , '0001' , '50003' , N'未接收' , NULL INSERT TA SELECT '0002' , '0003' , '60001' , N'未接收' , NULL INSERT TA SELECT '0001', '0005' , '80001', N'未接收' , NULL IF OBJECT_ID('TB')IS NOT NULL DROP TABLE TB GO CREATE TABLE TB(卡号 VARCHAR(10), 单位编号 VARCHAR(10), 是否已读 NVARCHAR(10)) --------------------------- INSERT TB SELECT 50001 ,'0005', N'已读' INSERT TB SELECT 50002 ,'0003' , N'已读' INSERT TB SELECT 50003 , '0008' , N'已读' INSERT TB SELECT 80001, '0009' , N'已读' IF OBJECT_ID('PROC_UPDTE')IS NOT NULL DROP PROC PROC_UPDTE GO CREATE PROC PROC_UPDTE AS DECLARE @ERR INT SET @ERR=0 BEGIN TRAN UPDATE B SET 单位编号=A.接收单位编号,是否已读=N'未读' FROM TB B ,TA A WHERE B.卡号=A.卡号 SET @ERR=@ERR+@@ERROR UPDATE A SET 接收日期=GETDATE(),是否已接收=N'已接收' FROM TB B ,TA A WHERE B.卡号=A.卡号 SET @ERR=@ERR+@@ERROR IF @ERR=0 COMMIT ELSE ROLLBACK GO EXEC PROC_UPDTE SELECT * FROM TA SELECT * FROM TB /*发送单位编号 接收单位编号 卡号 是否已接收 接收日期 ---------- ---------- ---------- ---------- ----------------------- 0005 0001 50001 已接收 2009-02-11 19:07:12.993 0006 0001 50002 已接收 2009-02-11 19:07:12.993 0007 0001 50003 已接收 2009-02-11 19:07:12.993 0002 0003 60001 未接收 NULL 0001 0005 80001 已接收 2009-02-11 19:07:12.993 卡号 单位编号 是否已读 ---------- ---------- ---------- 50001 0001 未读 50002 0001 未读 50003 0001 未读 80001 0005 未读 */