“+”附近的语法不正确 - SQL/TSQL
Incorrect Syntax Near '+' - SQL/TSQL
正在尝试执行此操作(在 SQL Server Management Studio 中)
DECLARE @fun as int
SET @fun = 40
PRINT 'String' + 'Hello!'
EXEC msdb.dbo.sp_senddbmail
@profile_name = 'Some working profile',
@recipients = 'someone@example.ca',
@subject = 'String' + 'Hello!',
@body = 'Test email sendout'
出现此错误:
Msg 102, Level 15, State 1, Line 8
Incorrect syntax near '+'.
注意第一个连接有效,第二个没有。
我采取的步骤:
全部重新输入(因此不是复制粘贴错误)。尝试将其更改为 ('String' + 'Hello!') 并得到错误 Incorrect syntax near '('.
所以我感觉有点迷茫。
编辑 2: 我更改了示例,因为当它的两个字符串不涉及转换时会发生同样的错误
试试这个,将 int 值转换为 varchar,然后与另一个 varchar 值连接
DECLARE @fun as int
SET @fun = 40
PRINT convert(varchar(10), @fun) + 'Hello!'
EXEC msdb.dbo.sp_senddbmail
@profile_name = 'Some working profile',
@recipients = 'someone@example.ca',
@subject = convert(varchar(10), @fun) + 'Hello!',
@body = 'Test email sendout'
传递给存储过程参数的值(在 T-SQL 中)必须是,嗯,"single values"(刚才想不出这个技术术语)。您不能使用如下代码:
@subject = A + B + C
你只能有这样的代码
@subject = A
所以在这种情况下,您需要这样的东西:
DECLARE
@fun int
,@Subject nvarchar(255)
SET @fun = 40
SET @Subject = 'String' + 'Hello!'
EXEC msdb.dbo.sp_send_dbmail -- Added the second underscore...
@profile_name = 'Some working profile',
@recipients = 'someone@example.ca',
@subject = @Subject,
@body = 'Test email sendout'
正在尝试执行此操作(在 SQL Server Management Studio 中)
DECLARE @fun as int
SET @fun = 40
PRINT 'String' + 'Hello!'
EXEC msdb.dbo.sp_senddbmail
@profile_name = 'Some working profile',
@recipients = 'someone@example.ca',
@subject = 'String' + 'Hello!',
@body = 'Test email sendout'
出现此错误:
Msg 102, Level 15, State 1, Line 8
Incorrect syntax near '+'.
注意第一个连接有效,第二个没有。
我采取的步骤:
全部重新输入(因此不是复制粘贴错误)。尝试将其更改为 ('String' + 'Hello!') 并得到错误 Incorrect syntax near '('.
所以我感觉有点迷茫。
编辑 2: 我更改了示例,因为当它的两个字符串不涉及转换时会发生同样的错误
试试这个,将 int 值转换为 varchar,然后与另一个 varchar 值连接
DECLARE @fun as int
SET @fun = 40
PRINT convert(varchar(10), @fun) + 'Hello!'
EXEC msdb.dbo.sp_senddbmail
@profile_name = 'Some working profile',
@recipients = 'someone@example.ca',
@subject = convert(varchar(10), @fun) + 'Hello!',
@body = 'Test email sendout'
传递给存储过程参数的值(在 T-SQL 中)必须是,嗯,"single values"(刚才想不出这个技术术语)。您不能使用如下代码:
@subject = A + B + C
你只能有这样的代码
@subject = A
所以在这种情况下,您需要这样的东西:
DECLARE
@fun int
,@Subject nvarchar(255)
SET @fun = 40
SET @Subject = 'String' + 'Hello!'
EXEC msdb.dbo.sp_send_dbmail -- Added the second underscore...
@profile_name = 'Some working profile',
@recipients = 'someone@example.ca',
@subject = @Subject,
@body = 'Test email sendout'