这是我如何配置我的LibName
LIBNAME OrcaleSAS ORACLE USER=UserName PASSWORD=pwd*** PATH = '(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=host.unix.####.com)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=prod.tk.com)))'
要获取下面的数据,我正在使用的代码
PROC SQL;
connect using OracleSAS AS OracDB;
select * from connection to oracle
(select * from ENTITY_DATES_WK13);
disconnect from OracDB;
quit;
我收到错误 OracleSAS不是SAS名称& LIBNAME语句中的错误,我对SAS来说相当新...... !!
答案 0 :(得分:2)
连接到oracle或任何dbms可以通过libname或显式传递来完成。 Libname方法用于访问SAS中的oracle表(或任何dbms)(表通常移动到SAS)。显式方法(使用connect语句)其中查询直接发送到Oracle(或提到的dbms)。对于oracle(或anydbms)表,此方法不可互换,因此您会收到错误。
下面是libname方法
LIBNAME OrcaleSAS ORACLE USER=UserName PASSWORD=pwd*** PATH = '(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=host.unix.####.com)(PORT=1521)) (CONNECT_DATA=(SERVICE_NAME=prod.tk.com)))' libname sastab "/whatever path/"; proc sql; create table sastab.tablename as select * oratable.tablename quit;
下面是显式传递方法
proc sql;
connect to oracle as myconn (user=smith password=secret
path='myoracleserver');
create table sastab.newtable as
select *
from connection to myconn
(select *
from oracleschematable);
disconnect from myconn;
quit;
答案 1 :(得分:1)
您用于库的名称(libref
)只能使用8个字符。
OracleSAS
是9个字符。
使用更短的东西。
答案 2 :(得分:0)
设置libname时,您不需要PROC SQL的Connect部分。您将两种连接SQL数据库的方法混合为一种方法。
假设您的libname工作正常,您可以像查询其他任何SAS表一样查询它:
PROC SQL;
create table want as
select * from ENTITY_DATES_WK13;
quit;
proc print data=want(obs=5);
run;
另一种方法是通过'这意味着查询将完全传递给服务器以在该端运行。这意味着内部查询需要符合Oracle标准,并且您无法使用SAS功能或数据。
答案 3 :(得分:0)
最后我结束了这样的事情..,
Public Function GetCol(c As String) As Long
Dim i As Long, t As Long
c = UCase(c)
For i = Len(c) To 1 Step -1
t = t + ((Asc(Mid(c, i, 1)) - 64) * (26 ^ (Len(c) - i)))
Next i
GetCol = t
End Function