日期:2014-05-17 浏览次数:20616 次
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 未读
*/