gpt4 book ai didi

sas - 解析PROC SQL内部的宏变量

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

我有一个需要在 PROC SQL 中使用的宏变量。它的解析方式似乎有完美的语法,但我收到语法错误,我不知道为什么;

%let test = mytext;
PROC SQL;
CREATE TABLE myTalbe&test AS
SELECT DISTINCT
a.column
FROM
tablename a
WHERE
a.column = %bquote('&test')
;QUIT;

我收到的错误在已解析的文本 'mytext' 下抛出一条红线,并显示

ERROR 22-322: Syntax error, expecting one of the following: a name, a quoted string, a numeric constant, a datetime constant, a missing value, (, *, +, -, ALL, ANY, BTRIM, CALCULATED, CASE, INPUT, PUT, SELECT, SOME, SUBSTRING, TRANSLATE, USER.

我觉得这个错误不适用这里。如果我在 'mytext' 中进行硬编码,它就可以正常工作。我是不是在眼皮子底下错过了什么?谁能帮我一下吗?

谢谢!!!

最佳答案

宏引用使 SAS 解析器感到困惑。对于此程序,我将删除 %bquote() 的使用,只使用双引号而不是单引号,以便解析宏变量引用。

WHERE a.column = "&test"

如果您实际上正在生成直通 SQL 到需要对字符串文字使用单引号的系统,那么您将需要使用 %unquote() 来删除宏引用。

... from connection to ... ( ...
WHERE a.column = %unquote(%bquote('&test'))
... ) ...

关于sas - 解析PROC SQL内部的宏变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44372193/

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