我试图将某些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'。
附近的语法错误
发生了什么事?
答案 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'.
注意这个实际意味着你需要一个'@'。另一个高质量的错误消息