【发布时间】:2012-09-18 04:07:32
【问题描述】:
我想使用这样的存储过程创建或更新视图:
CREATE PROC Proc_Get_Ready_Weapons
AS
BEGIN
IF EXISTS(select * FROM sys.views where name = 'dbo.vwGetReadyWeapons')
BEGIN
EXEC ('CREATE VIEW dbo.vwGetReadyWeapons ... rest of view')
END
ELSE
BEGIN
EXEC ('CREATE OR REPLACE VIEW dbo.vwGetReadyWeapons ... rest of view')
END
IF @@ROWCOUNT = 0
PRINT 'Warning: No rows were updated'
END
但是得到这个错误:
消息 156,第 15 级,状态 1,第 1 行
关键字“OR”附近的语法不正确。
警告:没有更新任何行
【问题讨论】:
-
这里列出了一些令人畏惧的事情。首先,无论视图是否存在,您都在执行相同的代码。
-
您确定检查
@@ROWCOUNT是对视图是否已创建或更新的有效测试?我可能会在这里使用TRY/CATCH。
标签: sql sql-server-2008 tsql