You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle 19c触发器查询user_tab_columns无返回结果问题求助

Oracle 19c触发器查询user_tab_columns无返回的解决方法
  • 核心原因:Oracle对未加双引号的标识符默认会转换为全大写存储到数据字典中,你查询条件中写的table_name = 'tb_test'使用小写表名,无法匹配数据字典中实际存储的TB_TEST记录,因此查询无结果。
  • 代码笔误:游标定义的SQL语句中将关键字from错写为form,且语句末尾缺少分号,若为实际运行代码会触发编译错误,可检查是否为输入时手误。

修正后触发器代码

create or replace trigger mySche1.AUT_tb_test 
  after update on mySche1.tb_test 
  for each row
declare
  cursor vco_col_nm
  is
    select column_name 
      from user_tab_columns 
     where table_name = 'TB_TEST'; -- 修正为全大写表名,修正关键字、补充分号

  colList varchar2(2048);
begin
  for colNm in vco_col_nm loop
    colList := colList || colNm.column_name || ',';
  end loop;

  mySche1.pack1.proc1 (colList);
end;
/

如果你建表时特意用双引号指定了小写表名(如create table mysche1."tb_test"),才需要在查询条件中保留小写表名。Oracle不推荐使用大小写混合的带引号标识符,会大幅提高后续数据字典查询的匹配成本。
若需要避免大小写差异导致的匹配问题,也可以将查询条件改写为where UPPER(table_name) = 'TB_TEST'做模糊匹配。

内容的提问来源于stack exchange,提问作者mike

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 19:54:01