%let table_no=EMP_HIST;
proc sql;
connect to oleDB as passThru
(properties=('Integrated Security'=SSPI 'Persist Security Info'=TRUE 'Initial Catalog'=DBDWH_EMP)
provider=SQLOLEDB PROMPT=NO DATASOURCE='DWH-I-SQL.DWHNET\DB01 schema=DWHDS);
create table work.temp_views as select
*
from connection to passThru (
SELECT
s.name as schema_name
,v.name as view_name
FROM sys.views v
,sys.schemas s
WHERE v.schema_id=s.schema_id
AND s.name like 'dwh'
AND v.name ="&table_no"
ORDER BY 1,2
);
disconnect from passThru;
quit;
ERROR: Describe error: IColumnsInfo::GetColumnInfo failed. : Deferred prepare could not be
completed.: Statement(s) could not be prepared.: Invalid column name
'EMP_HIST'.
Question -I am ruuning the above code and it seems that code is resloving the macro varibale table no but due to pass through method it is showing above error
What should I write to run this code
This is just a guess but some databases don't like double quotes so try this:
AND v.name = %str(%')&table_no%str(%')
If that gives you trouble, apply %unquote:
AND v.name = %unquote(%str(%')&table_no%str(%'))
It's finally time to hack! Remember to visit the SAS Hacker's Hub regularly for news and updates.
Learn how use the CAT functions in SAS to join values from multiple variables into a single value.
Find more tutorials on the SAS Users YouTube channel.
Ready to level-up your skills? Choose your own adventure.