@DougZ I don't understand what you are saying.
> First, SAS should be implementing whatever Oracle implements as its SQL, not the ANSI form.
Not it shouldn't. I have SAS/Access to Oracle, SAS/Access to Teradata, SAS/Access to DB2 on my server.
I do not want the SAS language to change, and which functions should it then implement? Teradata's or IBM's version?
> I am not using a SAS libname here; this is an Oracle passthrough code block.
Using a libname does not mean explicit pass-through. You only do explicit pass-through when you submit code using
execute by or from connection to .
> since my SQL runs when using Squirrel [], my Oracle DBAs will say, "That's a SAS problem".
If you use explicit pass-through, and as long as they point to the same libname schema, the same SQL queries that run in Squirrel will run from SAS. Period.
If you don't, you then run SAS code, and you must use SAS syntax. And you can leverage SAS functions in your SQL, like intnx() or putn(). SAS has over 500 functions when Oracle stays in the double digits, so I must prefer the richness of SAS thank you very much.
You don't expect Oracle to understand SAS syntax, and likewise SAS has it own syntax, different from that of Oracle, SQL Server, Hive, DB2, MySQL, etc.
You really must understand the difference between implicit and explicit pass-through.
You'll then reap the benefits of both words when you use the strengths of each, like:
proc sql;
connect using ORALIB; /* sas-only syntax here */
create table TAB as select intnx(...) /* sas function */
from connection to ORALIB
(
select ... /* oracle-only syntax here */
rank() over(...) /* oracle window function */
);
quit;
... View more