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

问题描述 投票:0回答:1

我正在从基于.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关键字,因为我正在通过我的应用程序运行脚本,我不能使用执行sp_executesql,因为还有类似的文件用于创建存储过程(在查询本身内包含单个引号)。我现在有哪些选择?

PS:尽管使用create table命令时不会出现此问题。

sql .net view
1个回答
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进行视图创建。

© www.soinside.com 2019 - 2024. All rights reserved.