0

我最近(今天)开始使用 SQL,我完全不知道自己在做什么。我创建了一个Query.sql文件并开始输入一些随机命令。我突出显示 aSELECT并执行它以查看会发生什么,我添加一个新的SELECT,突出显示它并查看它的作用。

但是,当我尝试创建视图时,它遇到了一些问题。我真的不明白为什么,但使用GO之前和之后似乎可以解决问题,但是现在当我从该视图中进行选择时,它无法识别它(也就是说,它有效,但它以红色突出显示,通常这意味着它不应该编译)。

有人可以用外行的话解释发生了什么吗?我该如何解决这个SELECT * FROM METRIC_STATS问题?(我尝试将它封装在同一个 go 中,其他 go,甚至不完全知道它应该是什么样子)

GO
CREATE VIEW METRIC_STATS (  ID, MONTH, TEMP_C, RAIN_C) 
AS SELECT   ID, 
            MONTH, 
            (TEMP_F - 32) * 5 /9, 
            RAIN_I * 0.3937 
            FROM STATS;
GO          
SELECT * FROM METRIC_STATS;
4

3 回答 3

2

现在,当我从该视图中进行选择时,它无法识别它(也就是说,它可以工作,但它以红色突出显示,通常这意味着它不应该编译)。

假设您使用的是 SQL Server Management Studio:您必须手动重置其视图列表。您可以通过右键单击视图然后刷新来做到这一点。

@AlexK 的建议如果存在也可以使用(在我的 SSMS 中,没有这样的菜单命令。)

于 2013-01-04T12:30:43.850 回答
1

GO是默认的SQL 批处理分隔符- 大多数 DDL 语句CREATE VIEW必须是批处理中的第一个语句,因此可能您的 SQL 失败了,因为您的CREATE VIEW.

此外,CREATE VIEW只能有一个 SELECT 语句,因此您需要在 CREATE VIEW 之后和从中 SELECT 之前使用 GO。

请注意,一旦创建了视图,它就在数据库中是“永久的”——您不需要为了使用它而不断地创建它吗?如果您需要更改视图,则需要drop在重新创建它或alter现有视图之前更改它。

于 2013-01-04T12:38:37.453 回答
1

我最近(今天)开始使用 SQL,我完全不知道自己在做什么

我建议您在尝试使用 SQL 之前阅读一本有关 SQL 的书。

http://msdn.microsoft.com/en-us/library/ms130214.aspx

于 2013-01-04T12:46:09.903 回答