作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试实现下面的代码建议的内容,但在创建和更改行上都收到错误关键字“view”附近的语法不正确
。
IF Object_ID('TestView') IS NULL
BEGIN
create view TestView
as
. . .
END
ELSE
BEGIN
ALTER view TestView
as
. . .
END
最佳答案
因为 ALTER/CREATE 命令不能位于 BEGIN/END block 内。您需要在创建之前测试是否存在并删除它
IF Object_ID('TestView') IS NOT NULL
DROP VIEW TestView
GO
CREATE VIEW TestView
as
. . .
GO
如果您担心权限丢失,您也可以编写 GRANT 语句脚本,并在最后重新运行这些语句。
您可以将创建/更改包装到字符串中并执行 EXEC - 这对于大 View 可能会变得丑陋
DECLARE @SQL as varchar(4000)
-- set to body of view
SET @SQL = 'SELECT X, Y, Z FROM TABLE'
IF Object_ID('TestView') IS NULL
SET @SQL = 'CREATE VIEW TestView AS ' + @SQL
ELSE
SET @SQL = 'ALTER VIEW TestView AS ' + @SQL
EXEC(@SQL)
关于sql-server - 无法根据 View 的存在使用 IF 创建或更改 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/632307/
我是一名优秀的程序员,十分优秀!