编写脚本提示:

错误的语法:"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必须是批处理中仅有的语句"-LMLPHP

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
05-13 01:38