我正在从基于.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命令不会发生此问题。
答案 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进行视图创建。