文档介绍:
这里说的访问数据库不是把数据库作为一个lib来访问,而是通过connection来访问,为什么要 用sas/access的这种办法来访问DBMS呢,是因为要处理大量数据的时候,SAS要在本机生成 一些文件(
这里说的访问数据库不是把数据库作为一个lib来访问,而是通过connection来访问,为什么要 用sas/access的这种办法来访问DBMS呢,是因为要处理大量数据的时候,SAS要在本机生成 一些文件(临时文件之类),而把sql语句直接提交给DBMS,由DMBS执行,SAS就不会需 要中间这些步骤了。
简单来说,就是把sql语句交给DBMS engine来执行,这种方式在SAS里叫做 Pass-Through Facility。
下面是一个完整的pass-through方式执行sql的语句:
proc sql;
connect to oracle as mydb (Path = 'ConnectionString' user='dbuser' password = 'passwd');
%put &sqlxmsg;
select count(*) from connection to mydb
(select * from scott);
%put &sqlxmsg;
disconnect from mydb;
quit;
connect to语句是连接到数据库,然后给sas 一个别名,叫mydb
select count(*) from connection to mydb 这里是指从 DBMS 返回的结果从 select 数据, 而真正运行在dbms端的语句则是括号中的这句 (select * from suspect_duplicates_2);
当然是 断开连接了 disconnect from mydb;
ps.
%put &sqlxmsg;是sas的宏,用来输出dbms的错误信息
以上的示例是用来select有结果集的,对于没有结果集的sql语句,要用到EXECUTE,见下例:
proc sql;
connect to oracle as mydb (Path = 'ConnectionString' user='dbuser' password = 'passwd');
%put &sqlxmsg;
execute
(create table ) by mydb;
%put &sqlxmsg;
disconnect from mydb;
quit;
括号里的sql语句可以是create, update,等等...