DATA Step, Macro, Functions and more

PROC SQL - Oracle

Reply
Frequent Contributor
Posts: 84

PROC SQL - Oracle

Hi SAS users,

 

Need help with solving this macro in PROC SQL.

 

PROC SQL;
CONNECT TO ORACLE(PATH=XXXX USER=YYYY. ORAPW=ZZZ);
execute (delete from A.&MyTable
where substr(RUN_DT,1,7) = &ANA_RUN_DT    (RUN_DT is a charcter field in table)
) by oracle;
disconnect from oracle;
QUIT;

 

 

ANA_RUN_DT is  2016-11

 

Error  -

 

ERROR: ORACLE execute error: ORA-01722: invalid number.

 

I tried putting "&ANA_RUN_DT" and  '&ANA_RUN_DT' , but it did not work.

 

Thanks,

Ana

Trusted Advisor
Posts: 1,372

Re: PROC SQL - Oracle

I have little experience with oracle sql, anyhow

oracle date is a numeric variable while 2016-11 is a character variable.

You should ask oracle experts how to write this code line.

Trusted Advisor
Posts: 1,372

Re: PROC SQL - Oracle

while using macro variable use double quotes as
"&ana_run" to resolve the macro
Super User
Super User
Posts: 6,499

Re: PROC SQL - Oracle

I suspect that ORACLE wants you to use single quotes, but SAS will not expand the macro variable reference inside of single quotes.

Try this instead.

%unquote(%bquote('&ana_run_dt'))
Ask a Question
Discussion stats
  • 3 replies
  • 161 views
  • 0 likes
  • 3 in conversation