创建视图必须是批处理中的第一条语句

时间:2019-03-18 14:56:20

标签: sql .net view

我正在从基于.NET的Windows应用程序中运行一组脚本文件。其中一个文件具有以下脚本-

IF EXISTS(SELECT * FROM SYS.VIEWS WHERE NAME = 'TP_LEAVEDATA') EXEC SP_RENAME 'TP_LEAVEDATA', 'TP_LEAVEDATA_BKP_EXPORT_TEST1' 
CREATE VIEW TP_LEAVEDATA AS
SELECT USERNAME, Dept, LeaveType, LeaveFrom, LeaveUpto FROM LeaveRequest_DATA

执行脚本时出现错误创建视图必须是批处理中的第一条语句

我不能在此处使用 GO 关键字,因为我正在通过应用程序运行脚本,而不能使用 execute sp_executesql ,因为存在用于创建存储过程的类似文件以及(在查询本身内部包含单个反向逗号)。我现在有什么选择?

PS:不过,create table命令不会发生此问题。

1 个答案:

答案 0 :(得分:0)

您可以在其之前使用put GO:

IF EXISTS(SELECT * FROM SYS.VIEWS WHERE NAME = 'TP_LEAVEDATA') BEGIN
    EXEC SP_RENAME 'TP_LEAVEDATA', 'TP_LEAVEDATA_BKP_EXPORT_TEST1' ;
END;
GO

CREATE VIEW TP_LEAVEDATA AS
    SELECT USERNAME, Dept, LeaveType, LeaveFrom, LeaveUpto
    FROM LeaveRequest_DATA;

另一种选择是使用动态SQL进行视图创建。