')附近的语法不正确

时间:2009-07-14 10:07:40

标签: installshield-2009

我有一个BasicMSI项目(Installshield 2009),它在安装过程中运行SQL脚本。 在安装过程中,我收到以下错误。

错误27506.执行SQL脚本{SCRIPTNAME}时出错。第352行。')'附近的语法不正确。 (102)

问题是我在脚本的第352行没有任何')',如果我使用SQL Management Studio Express运行脚本,脚本也没​​有任何问题。

任何人都可以告诉我这是什么问题,我该如何解决? 感谢。

PS。我无法将脚本错误处理选项设置为“On Error,Goto Next Statement”,因为它不会创建我的一些外键。

IF NOT EXISTS (SELECT * FROM sys.triggers WHERE object_id = OBJECT_ID(N'[dbo].[TRIGGER_NAME]'))
EXEC dbo.sp_executesql @statement = N'
CREATE TRIGGER [dbo].[TRIGGER_NAME]
ON [dbo].[TABLE_NAME]                  -- LINE: 352
INSTEAD OF INSERT
AS
BEGIN 
DECLARE @Count INT;
SET @Count = (SELECT COUNT([Name]) 
                FROM TABLE_NAME
                WHERE IsDeleted = 0 AND [Name] IN (SELECT [Name] FROM INSERTED));

IF @Count > 0
BEGIN
    RAISERROR (''Error Message.'', 16, 1);
    Rollback;   
END
ELSE
BEGIN
    INSERT INTO dbo.TABLE_NAME SELECT {Columns} FROM INSERTED;
    SELECT CONVERT(BigInt,SCOPE_IDENTITY()) AS [value]
END
END
' 
GO

2 个答案:

答案 0 :(得分:1)

我得到了类似的错误(一个带有')'作为有问题的角色,一个有';'作为违规的人物)。然后我注意到,当InstallShield导入我的脚本时,它已经改变了“>”到“& gt;”和“<”到“& lt;”和“&”到“& amp;”。在InstallShield脚本编辑器中对这三个替换的导入脚本进行搜索和替换,为我解决了这个问题。

答案 1 :(得分:0)

如果您编写了一个以编程方式填充的IN语句,只是在运行时会丢失一些值,导致语句中出现“... WHERE x IN()”,这似乎是合理的。无效。

这会产生该错误,而且,这是一个错误,很容易出现在一个环境中而不是另一个环境中。如果没有真正看到剧本,很难提供更多细节。