Sql 异常“@errno”附近的语法不正确

use*_*erx 2 sql vb.net sql-server linq-to-sql

我是 Vb.net 和 Linq2sql 的新手,在在这里发布问题之前我在 google 上搜索了解决方案,但我无法修复它,我正在尝试使用 Vb.net 和 Linq2sql 将行插入数据库, SubmitChanges() 函数返回“@errno”附近语法错误 SQl 异常。表相关触发器:

 USE [Roster]
 GO
 /****** Object:  Trigger [dbo].[ti_profile]    Script Date: 11/14/2017 
 4:17:00 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER TRIGGER [dbo].[ti_profile] on [dbo].[PROFILE] AFTER  INSERT
AS 

BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;

declare @ls_profile_code  varchar(6)
declare @errno int
declare @errmsg varchar(255)


--set @ls_profile_code = select inserted.profile_code from inserted

-- insert what ever was added to the object table and not yet been inserted or updated in the profile_access
insert into Profile_access (profile_code , object_code)

    select  (select inserted.profile_code from inserted) ,
            object_code
    from    Objects
    where   object_code not in

        (
            select  object_code
            from    Profile_access 
            where   profile_code = @ls_profile_code
        )




return

error:
raiserror @errno @errmsg
rollback transaction


END
Run Code Online (Sandbox Code Playgroud)

关于如何解决这个问题的任何想法请..

Joe*_*orn 5

RAISEERROR()函数现在需要括号。这在 Sql Server 2008 R2 和 Sql Server 2012 之间发生了变化。

所以这:

raiserror @errno @errmsg
Run Code Online (Sandbox Code Playgroud)

变成这样:

raiserror(@errmsg, @errno, 1)
Run Code Online (Sandbox Code Playgroud)