【发布时间】:2013-04-15 12:07:18
【问题描述】:
我需要从数据库中的表中获取数据,其数据库名称将在触发器期间被确定为变量。然后,我知道此变量需要从已确定数据库中的表中获取一个项目的 seqno,该项目在触发器期间也被确定为变量。
我正在尝试这条路线,因为我假设我需要在将 SQL 语句设置为变量之前构建它。
这不起作用,我需要知道如何做到这一点的最佳方法:
DECLARE @SU_SEQNO INTEGER, @SU_NAME VARCHAR(50), @SU_OWNER VARCHAR(15), @SUD_SEQNO INTEGER, @SQL NVARCHAR(500)
SET @SU_OWNER = 'XXX'
SET @SU_NAME = '1ABC234'
SET @SQL ='SELECT @SUD_SEQNO=SEQNO FROM ' + (@SU_OWNER) + '.SU_MAIN
WHERE UNITNAME= ' + @SU_NAME
SET @SUD_SEQNO = (EXECUTE (@SQL))
非常感谢您对此的任何帮助
【问题讨论】:
-
这是在 MS SQL Server 中吗?
-
“触发期间” - 我通常建议不要在触发期间访问当前数据库之外的 anything。通常最好将此类活动排队(使用例如队列或服务器代理的表)并且不要将原始事务延长太久。此外,与触发器相关,标量变量的存在通常表明作者不知道
inserted和deleted可以包含多行 行(或零行)
标签: sql-server tsql