如何连续无误地编写SQL语句

时间:2019-05-30 19:06:09

标签: sql sql-server

我正在运行一个CREATE VIEW语句,该语句完全独立并且可以独立运行。在下面的两行中,我运行一个单独的SELECT语句以查看结果,该语句本身可以完美运行。

但是,我一起运行了整个脚本,但这是行不通的。

代码看起来像这样:

Prelude> partition (>3) [1,4,2,5]
([4,5],[1,2])
Prelude> partition (>3) [1,3,0,2]
([],[1,3,0,2])
Prelude> partition (>3) [1,7,8,0]
([7,8],[1,0])
Prelude> partition (>3) [1,7,8,9]
([7,8,9],[1])

错误消息是“关键字'SELECT'附近的语法不正确。”

3 个答案:

答案 0 :(得分:2)

您需要在语句之间放置一个GO。分号不足以告诉解析器它们是独立的批次。

答案 1 :(得分:0)

您应该单独运行此查询,或者您的SQL server年纪太大,无法运行CREATE OR ALTER VIEW。首先创建视图,然后运行选择。

您还可以添加GO,它将分隔成批:

--- These four lines run fine on their own.
CREATE OR ALTER VIEW view1 AS
SELECT column1, column2, column3
FROM table1;
GO
--- This line runs fine on its own
SELECT * FROM view1

--- If I run the whole script it doesn't work

答案 2 :(得分:0)

添加批处理分隔符,转到,stmt之间,创建视图结束stmt和您从视图中选择的内容。

还需要添加检查是否存在视图,并根据sql版本将其首先删除或更改以更改或创建视图。

IF OBJECT_ID('FOO') IS NOT NULL
DROP VIEW FOO;
GO

CREATE VIEW FOO
AS
SELECT * FROM sysobjects;
GO
SELECT * FROM FOO
GO