我使用下面的查询来创建一个表
CREATE TABLE FINAL_TBL AS SELECT /*+ leading(e) use_hash(t) full(t) parallel(t,2) */
t.customer_id
, max(decode(type,'C',t.num,null)) AS CONTACT_TELNO
, max(decode(type,'H',t.num,null)) AS HOME_TELNO
, max(decode(type,'W',t.num,null)) AS WORK_TELNO
, max(decode(type,'O',t.num,null)) AS OTHER_TELNO
from TABLE_A e, TMP_NUMBERS t
where t.num = e.num
and e.status = 'P'
group by t.customer_id
order by 1;
Run Code Online (Sandbox Code Playgroud)
但该表是使用截断的列名创建的,如下所示CUSTOMER_ID CONTACT_TE HOME_TELNO WORK_TELNO OTHER_TELN
为什么这样?我该如何解决?
e 一列的数据类型从 NUMBER(4) 更改为 VARCHAR2(4)。DBA 进行了现有值的转换。
现在,当我们尝试使用 proc * c 代码将记录插入表时,出现错误“ORA-01031:权限不足”。
我们可以从 SQLPLUS 插入记录。一段时间后问题就消失了。一旦 DBA 重建表,问题就消失了。
每次我们用新的更改刷新测试环境后都会出现此问题。