2012-03-06 2 views
1

Что именно означает «%» в прохождении через средства? Я получил этот код от других, код работает нормально, но я просто не понимаю, почему нужно было бы поставить% перед переменными. Если это макрос%, я не вижу никакого макрокода в библиотеке. Любое объяснение поможетЧто означает «%» перед переменной в прохождении SAS, точно выполняет/или означает?

proc sql; 
    connect to odbc as d(datasrc=source); 
    create table out as select * from connection to d 
    (
    select 
     t.id,t.rule_id, 
     %application_id, 
     t.date, 
     %dpv, %dpvfn1, %dpvfn2, %dpvfn3, 
     %AddressValid,%AddressValidMsg,%AddressType,  
     from &db2 t 
     join &db3 dxs on t.id=dxs.id 
left join &db4 dxr on t.id=dxr.id 
); 
    disconnect from d; 
quit; 
+0

С какими типами СУБД вы подключаетесь? – stevepastelan

+0

Кроме того, если вы хотите дважды проверить, является ли это вызовом макроса, возможно, попробуйте что-то вроде '% put% application_id;' и посмотрите, что что-то записывает в журнал – stevepastelan

+0

Наконец, вы можете проверить, есть ли другие макросы, загружаемые через автозаполнение: '% put% sysfunc (getoption (sasautos));' – stevepastelan

ответ

1

% MACRO X; VAR % MEND;

Приведенный выше пример - это определение макроса.

В вашем вопросе, все столбцы с% фактически делают макро-вызовов и заменяя вызовы со значениями, присутствующих в их макро definitions.For например, в Уре выберите запрос ...

select 
     t.id,t.rule_id, 
     %application_id, 
     t.date, 
     %dpv, %dpvfn1, %dpvfn2, %dpvfn3, 
     %AddressValid,%AddressValidMsg,%AddressType,  
     from &db2 t 
     join &db3 dxs on t.id=dxs.id 
left join &db4 dxr on t.id=dxr.id 

%application_id,%dpv, %dpvfn1, %dpvfn2, %dpvfn3,%AddressValid,%AddressValidMsg,%AddressType 

Все эти выше вызовы макросов будут получать их соответствующие определения и заменять их в месте выбранных столбцов ...

+0

Спасибо, я думаю, должен быть лучший способ сделать это правильно? – JPC

Смежные вопросы