【发布时间】:2019-11-21 09:50:15
【问题描述】:
我正在使用 Oracle Pass Through 和宏循环创建一个基本查询。当我连接到 Oracle 时它工作正常,从连接创建表但是当我只是尝试使用 Oracle 的执行(DDL 语句)时,它给了我一个无效的数据类型错误。我不知道如何解决它。我只是从另一个现有表创建表。我正在为这个特定程序使用 SAS EG,但只是代码编辑器而不是查询生成器。
&STATES 宏解析为我创建的全局宏中的状态列表
我已经使用连接到 Oracle 成功编写了相同的查询,从连接传递方法创建表,但也希望仅使用执行方法来查看更有效的测试。但是,当我使用 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:无效数据类型。
【问题讨论】:
标签: oracle sas macros pass-through