Я создаю базовый запрос, используя Oracle Pass Through и макро-цикл.Это работало нормально, когда я подключался к Oracle, создавал таблицу из соединения, но когда я просто пытался использовать Oracle только для выполнения (DDL-операторы), он выдавал мне недопустимую ошибку типа данных.Я не уверен, как это исправить.Я просто создаю таблицы из другой существующей таблицы.Я использую SAS EG для этой конкретной программы, но только редактор кода, а не конструктор запросов.
Макрос & STATES преобразуется в список состояний в глобальном макросе, который я создал
Я успешно написал тот же запрос, используя соединение с Oracle, создаю таблицу из метода сквозного соединения, нохотелось бы также заставить его работать только с методом execute, чтобы увидеть тест, который более эффективен.Однако при использовании метода execute появляется ошибка типа данных.
%let NUM=2;
%let FT=LT;
%let STATES=&&STATESR#
PROC SQL;
connect to oracle(path=&mydb user=&USER pw=&PW);
%macro DTCNT() / parmbuff;
%let i=1;
%let ST=%scan(&SYSPBUFF,&I);
%do %while (%str(&ST)^=);
execute(CREATE TABLE TMSIS_&ST._&FT._HDR_ADJDT_CNTS1 (bulkload=yes dbcreate_table_opts=nologging) AS
SELECT adj_date,
count(*) as row_cnt
from mcd_r&NUM._own.&ST._&FT._header_f
group by adj_date
order by adj_date) by oracle;
execute (commit) by oracle;
%let i=%eval(&I+1);
%let ST=%scan(&SYSPBUFF,&I);
%end;
%mend DTCNT;
%DTCNT(&STATES);
disconnect from oracle;
QUIT;
ОШИБКА: ошибка выполнения ORACLE: ORA-00902: недопустимый тип данных.