gpt4 book ai didi

tsql - 为什么在 EXEC 的参数中连接字符串有时会导致 T-SQL 中的语法错误?

转载 作者:行者123 更新时间:2023-12-04 02:11:08 28 4
gpt4 key购买 nike

在 MS SQL Server Management Studio 2005 中,运行此代码

EXEC('SELECT * FROM employees WHERE employeeID = ' + CAST(3 AS VARCHAR))

给出这个错误: Incorrect syntax near 'CAST'
但是,如果我这样做,它会起作用:
DECLARE @temp VARCHAR(4000)
SET @temp = 'SELECT * FROM employees WHERE employeeID = ' + CAST(3 AS VARCHAR)
EXEC(@temp)

我在这里找到了解释: T-SQL: Cannot pass concatenated string as argument to stored procedure

根据接受的答案, EXEC可以将局部变量或值作为其参数,但不能是表达式。

但是,如果是这种情况,为什么这样做:
DECLARE @temp VARCHAR(4000)
SET @temp = CAST(3 AS VARCHAR)
EXEC('SELECT * FROM employees WHERE employeeID = ' + @temp)
'SELECT * FROM employees WHERE employeeID = ' + @temp对我来说肯定看起来像一个表达式,但代码执行时没有错误。

最佳答案

The documentation声明 EXEC可以采用字符串变量、常量 T-SQL 字符串或两者的组合/串联。

您的“为什么这样做”示例使用常量 T-SQL 字符串和字符串变量的串联,因此完全合法。

关于tsql - 为什么在 EXEC 的参数中连接字符串有时会导致 T-SQL 中的语法错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2646492/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com