触发器不执行,为什么?????请教。。。急待中.......
了缘 2004-08-05 09:15:31 CREATE TRIGGER trigOrderReceipt ON [dbo].[OrderReceiptDetail]
AFTER INSERT
AS
.
.
.
DECLARE @fchrOrgCode varchar(100)
DECLARE @fchrDatabaseName varchar(100)
DECLARE @flotPrice float
DECLARE @flotAmount float
DECLARE @database1 varchar(100)
DECLARE @database2 varchar(100)
DECLARE @SQL nvarchar(2000)
SELECT @fchrDatabaseName=fchrDatabaseName FROM UDRP_ENTDATA..Sys_UserDataBase
WHERE fchrUserCode=@fchrOrgCode(从前面可以得到,可以不管)
SET @database1=@fchrDatabaseName + '..OrderReceiptDetail'
SET @database2=@fchrDatabaseName +'..OrderReceipt'
以上俩个变量为数据库名如databasename..tablename
因为要从库中找出相应的数据库,只能从表中根据条件找出
CREATE TABLE #TABLE1(fchrStockReceiptID uniqueidentifier,fchrItemID uniqueidentifier,flotPrice FLOAT,flotAmount FLOAT)
SET @SQL='INSERT INTO #TABLE1(fchrStockReceiptID,fchrItemID,flotPrice,flotAmount)
SELECT tabC.fchrStockReceiptID,tabA.fchrItemID,tabA.flotPrice,tabA.flotAmount
FROM ' + @database1 +' tabA
LEFT JOIN ' + @database2 +' tabC on tabA.fchrOrderReceiptID=tabC.fchrOrderReceiptID
WHERE tabA.fchrOrderReceiptID IN
(SELECT fchrOrderReceiptID FROM ' + @database2 +' WHERE tabC.fchrStockReceiptNO IN (SELECT '''+@fchrStockReceiptNO+'''))'
EXEC SP_EXECUTESQL @SQL
问题是执行到EXEC SP_EXECUTESQL @SQL 就没有反应了,#TABLE1表中记录总是空的,但是@SQL中的代码是可以执行的。不知道为什么?