我正在从基于.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命令时不会出现此问题。
您可以在它之前使用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进行视图创建。