sql-server - 在 Transact-SQL 中设置参数时如何连接字符串

标签 sql-server tsql

这里的第一个问题如下。我编写了以下代码,一切正常:

DECLARE @subject NVARCHAR(100)
SET @subject = 'Report executed on ' + CONVERT(VARCHAR(12), GETDATE(), 107)
SELECT @subject

结果:报告于2012年8月17日执行

但是在设置 msdb.dbo.sp_send_dbmail 过程的参数时尝试连接前一个字符串时,失败了

EXEC msdb.dbo.sp_send_dbmail @profile_name='XXX',
@recipients='XXXX@XXXXX.com',
@subject = 'Report executed on ' + CONVERT(VARCHAR(12), GETDATE(), 107),
@body= @tableHTML,
@body_format = 'HTML';

我知道我可以声明一个变量并将其发送到参数,但我想了解为什么直接在参数中连接时会失败。感谢您的时间和知识

最佳答案

T-SQL 存储过程的参数值不能是表达式。它们必须是常量或变量。

来自MSDN - Specify Parameters :

The parameter values supplied with a procedure call must be constants or a variable; a function name cannot be used as a parameter value. Variables can be user-defined or system variables such as @@spid.

关于sql-server - 在 Transact-SQL 中设置参数时如何连接字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12009832/

相关文章:

sql-server - dockerfile 如何将 SQL Server 公开为本地主机?

sql - 在生成查询时需要帮助

sql - 我需要 T-SQL 将数据导出到 CSV(带标题)的最佳实践

sql - SQL Server 2012 特殊自定义增量列

sql - 在 SQL Server 2008 中插入表使用数组

mysql - MySQL 和 MS SQL 语言之间的主要区别是什么?

sql - 我可以用 View (同名)替换表吗?

database - 如何在 Visual Studio 2010 数据库项目中开发 TSQL

sql - 如何使用表变量作为 OPENQUERY 的参数

sql-server - 具有多个 varbinary 列的表