我最近发现libname语句非常方便访问odbc中驻留的表.但我不知道如何访问具有两级名称的表.以下是一个例子.
我使用的旧代码(此代码有效):
proc sql;
connect to odbc(dsn=edw_nz user=&username. pw=&password.);
create table test select * from connection to odbc(
select *
from EDW_XYZ_PROD01..Table_xyz);
quit;
Run Code Online (Sandbox Code Playgroud)
现在,我想使用libname工具来访问odbc:
libname edw odbc database=edw_nz user=&username. pw=&password.;
proc sql;
create table test as
select *
from edw.EDW_XYZ_PROD01..Table_xyz;
quit;
Run Code Online (Sandbox Code Playgroud)
我收到此错误:ERROR 22-322:语法错误,期待以下之一:名称,(,),',',ANSIMISS,AS,CROSS,EXCEPT,FULL,GROUP,HAVING,INNER,INTERSECT,JOIN,左,自然,NOMISS,外,右,联盟,在哪里.ERROR 200-322:符号无法识别,将被忽略.
任何人都可以帮忙吗?非常感谢!
SAS无法处理3级名称.
您需要在libname部分中指定架构/数据库.您有几个选项(阅读所有选项的文档).
我们使用ODBC连接到我们的SQL服务器实例,如下所示:
libname pdata odbc complete='DSN=SQLServerProd;Database=MyDatabase';
Run Code Online (Sandbox Code Playgroud)
该complete=选项允许您指定完整的ODBC连接字符串.这应该允许您指定数据库/模式.