使用内联参数计算调用存储过程时出现TSQL错误

时间:2014-05-09 08:18:53

标签: sql-server

我试图将某些oracle转换为SQL Server但我在调用存储过程时遇到问题。以下电话:

Exec VEO_ADD_EVENT_NOTE p_DIVCODE, 
                        p_IncidentRef, 
                        p_UserID, 'A',  
                        format(getdate(),'dd/MM/yyyy HH:mm') + 
                        ' ' + Logged_FName + 
                        ' ' + Logged_LName + char(10) + 
                        'Template changed.';

产生此错误

  

Msg 102,Level 15,State 1,Server TRAC-LEEDS-11,Line 1   “getdate'。

附近的语法错误

发生了什么事?

1 个答案:

答案 0 :(得分:1)

经过一段时间的努力,我意识到了

在sql server中,您无法使用内联参数计算调用过程

我真的希望有些文件用大胆的字母告诉你! 作为一个来自非sql语言而没有这么多怪癖的人,这种东西简直莫名其妙。

如果我将代码更改为:

declare @text nvarchar(Max)
set @text = format(getdate(), 'dd/MM/yyyy HH:mm') + ' ' + Logged_FName + ' ' + Logged_LName + char(10) + 'Template changed.';

Exec VEO_ADD_EVENT_NOTE p_DIVCODE, p_IncidentRef, p_CompassUserID, 'A',  @text

然后我开始得到其他更多预期的错误:

Msg 207, Level 16, State 1, Server TRAC-LEEDS-11, Line 2
Invalid column name 'Logged_FName'.
Msg 207, Level 16, State 1, Server TRAC-LEEDS-11, Line 2
Invalid column name 'Logged_LName'.

注意这个实际意味着你需要一个'@'。另一个高质量的错误消息