我有这个问题。我应该在LinkedServer数据库中调用一个函数。所以这个数据库不会显示一个函数。
为此,我使用以下代码:
BEGIN
DECLARE @TSQL varchar(8000)
DECLARE @Data as DATE
SET @Data = GETDATE()
SET @TSQL = 'SELECT PIPPO FROM OPENQUERY([SQLIMELTC\IMELTCPROD],''SELECT [FlexNet].[dbo].[AF_GetUTCToLocal] (''''' +CAST(@Data AS NVARCHAR(100))+ ''''') AS PIPPO'' )'
EXEC @TSQL
END我有这个错误:
Msg 203, Level 16, State 2, Line 10
The name 'SELECT PIPPO FROM OPENQUERY([SQLIMELTC\IMELTCPROD],'SELECT [FlexNet].[dbo].[AF_GetUTCToLocal] (''2015-01-08'') AS PIPPO' )' is not a valid identifier.但是,如果我尝试在指令之前使用这段代码
EXEC @TSQL并使用它:
SELECT @TSQL在执行后,我在输出框中选择结果并执行它,它就可以工作了。我的问题是什么?
发布于 2015-01-09 01:16:15
看看EXECUTE (Transact-SQL)语法。当你使用变量时,你应该把它放在括号里。试试这个:
EXEC (@TSQL)发布于 2015-01-09 01:17:39
你需要用括号把@TSQL括起来,例如:
EXEC (@TSQL);不带括号的EXEC用于执行存储过程。例如:
DECLARE @TSQL VARCHAR(8000) = 'sp_lock';
EXEC @TSQL;将执行存储过程sp_lock
更好的做法是使用use sp_executesql,这样可以避免歧义:
EXECUTE sp_executesql @TSQL;https://stackoverflow.com/questions/27845718
复制相似问题