gpt4 book ai didi

sql-server - 无法根据 View 的存在使用 IF 创建或更改 View

转载 作者:行者123 更新时间:2023-12-02 07:21:02 25 4
gpt4 key购买 nike

我正在尝试实现下面的代码建议的内容,但在创建和更改行上都收到错误关键字“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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com