触发器不执行,为什么?????请教。。。急待中.......

了缘 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中的代码是可以执行的。不知道为什么?
...全文
243 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
了缘 2004-08-07
  • 打赏
  • 举报
回复
已解决,谢谢各位
netcoder 2004-08-06
  • 打赏
  • 举报
回复
有的话,贴出来,分析分析
netcoder 2004-08-05
  • 打赏
  • 举报
回复
不明白楼主到底想实现什么功能?,
--------------------------
#TABLE1表中记录总是空的
--------------------------
#TABLE1表的记录为什么不能是空的呢?也许本来就没有记录吗?
--------------------------

print @SQL
看看@sql的值吧
了缘 2004-08-05
  • 打赏
  • 举报
回复
用 exec(@SQL) 试试,有时效果不一样地。试试吧。
谢谢
也使用过,没有作用。
niuniu777 2004-08-05
  • 打赏
  • 举报
回复
用 exec(@SQL) 试试,有时效果不一样地。试试吧。
了缘 2004-08-05
  • 打赏
  • 举报
回复
已改成
SET @database1=LTRIM(RTRIM(@fchrDatabaseName)) + '..OrderReceiptDetail'
SET @database2=LTRIM(RTRIM(@fchrDatabaseName)) +'..OrderReceipt'

还是没用,EXEC SP_EXECUTESQL @SQL 前面的代码都可以执行的,我用代码把@SQL的值调出到查询分析器中另外执行是可以的但是用EXEC SP_EXECUTESQL 命令执行不了。
niuniu777 2004-08-05
  • 打赏
  • 举报
回复
个人意见:
SELECT @fchrDatabaseName=fchrDatabaseName FROM UDRP_ENTDATA..Sys_UserDataBase
WHERE fchrUserCode=@fchrOrgCode(从前面可以得到,可以不管)
中的这句话执行?
不执行的话:ltrim(rtrim(@fchrOrgCode))
了缘 2004-08-05
  • 打赏
  • 举报
回复
用变量的形式就不执行,不知道为什么,请教各位了,谢谢了
了缘 2004-08-05
  • 打赏
  • 举报
回复
把@sql中的代码用数据库实名代替变量就可以执行,
了缘 2004-08-05
  • 打赏
  • 举报
回复
@SQL
值是有的

27,582

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧