错误的语法:"create view必须是批处理中仅有的语句"

 编写脚本提示:

错误的语法:"create view必须是批处理中仅有的语句"

 

IF NOT EXISTS ( SELECT  1
                FROM    sys.views
                WHERE   name = 'v_CS_UserRoleNames' )
    BEGIN
        CREATE VIEW v_CS_UserRoleNames
        AS
            SELECT  c.UserID AS ur_UserID ,
                    c.LoginID AS ur_LoginID ,
                    c.FullName AS ur_FullName ,
                    c.[Status] AS ur_Status ,
                    c.ZoneID AS ur_ZoneID ,
                    c.OrgID AS ur_OrgID ,
                    c.FactID AS ur_FactID ,
                    ','
                    + STUFF(( SELECT    ',' + b.RoleName
                                        + CAST(b.RoleMajorType AS VARCHAR)
                              FROM      System_Role b
                              WHERE     CHARINDEX(','
                                                  + CONVERT(VARCHAR(36), b.RoleID)
                                                  + ',', ',' + c.RoleIDs + ',') > 0
                            FOR
                              XML PATH('')
                            ), 1, 1, '') + ',' AS ur_RoleNames
            FROM    System_Users c
    END

ELSE
    BEGIN
 
        ALTER VIEW v_CS_UserRoleNames
        AS
            SELECT  c.UserID AS ur_UserID ,
                    c.LoginID AS ur_LoginID ,
                    c.FullName AS ur_FullName ,
                    c.[Status] AS ur_Status ,
                    c.ZoneID AS ur_ZoneID ,
                    c.OrgID AS ur_OrgID ,
                    c.FactID AS ur_FactID ,
                    ','
                    + STUFF(( SELECT    ',' + b.RoleName
                                        + CAST(b.RoleMajorType AS VARCHAR)
                              FROM      System_Role b
                              WHERE     CHARINDEX(','
                                                  + CONVERT(VARCHAR(36), b.RoleID)
                                                  + ',', ',' + c.RoleIDs + ',') > 0
                            FOR
                              XML PATH('')
                            ), 1, 1, '') + ',' AS ur_RoleNames
            FROM    System_Users c
    END 

 

 

create view 必须是批处理中的第一条语句。

修改为:

IF NOT EXISTS ( SELECT  1
                FROM    sys.views
                WHERE   name = 'v_CS_UserRoleNames' )
    BEGIN
        DROP VIEW v_CS_UserRoleNames
    
    END

go
CREATE VIEW v_CS_UserRoleNames
AS
    SELECT  c.UserID AS ur_UserID ,
            c.LoginID AS ur_LoginID ,
            c.FullName AS ur_FullName ,
            c.[Status] AS ur_Status ,
            c.ZoneID AS ur_ZoneID ,
            c.OrgID AS ur_OrgID ,
            c.FactID AS ur_FactID ,
            ','
            + STUFF(( SELECT    ',' + b.RoleName
                                + CAST(b.RoleMajorType AS VARCHAR)
                      FROM      System_Role b
                      WHERE     CHARINDEX(',' + CONVERT(VARCHAR(36), b.RoleID)
                                          + ',', ',' + c.RoleIDs + ',') > 0
                    FOR
                      XML PATH('')
                    ), 1, 1, '') + ',' AS ur_RoleNames
    FROM    System_Users c

 

posted @ 2017-12-28 15:01  阿水zev  阅读(5879)  评论(0编辑  收藏  举报