我想问一下关于“ PROC SQL VALIDATE”的问题,如下:
关于以下PROC SQL查询的哪个语句为“假”?
proc sql;
validate
select name label="Country",
rate label="Literacy Rate"
from world.literacy
where "Asia" =
(select continent
from world.continents
where literacy.name=
continents.country)
order by 2;
我想知道为什么下面的第一个选项不是“ false”吗?
(a) The query syntax is not valid.
(b) The outer query must pass values to the subquery
before the subquery can return values to the outer
query
(c) PROC SQL will not execute this query when it is
submitted
(d) After the query is submitted, the SAS log will
indicate whether the query has valid syntax
答案是(d) 我想知道为什么查询语法无效?
非常感谢您!
答案 0 :(得分:0)
您发布的查询具有一个correlated
子查询(from world.continents
)。该子查询无法单独评估,但实际上取决于外部查询(world.literacy
)传递给它们的值。
让我解释一下这四个选项中的每一个,
(a) The query syntax is not valid. - False
不,这是完全有效的语句,其中有一个外部查询和一个子查询。
(b) The outer query must pass values to the subquery before the
subquery can return values to the outer query - True
如顶部所述,这是实际发生的情况。
(c) PROC SQL will not execute this query when it is submitted - True
您可以在doumentation中看到,validate
语句仅检查查询表达式的语法和语义的准确性,而不执行表达式。
(d) After the query is submitted, the SAS log will
indicate whether the query has valid syntax - True
相同的documentation还提到validate
语句在SAS日志中写入一条消息,指出该查询有效。如果有错误,则validate
会将错误消息写入SAS日志。