Error: ORA-06502: PL/SQL: 数字或值错误 : character string buffer too small(触发器中使用系统动态视图导致)
oracle 触发器中,在工具toad中使用F5报错
15:27:51 Error: ORA-06502: PL/SQL: 数字或值错误 : character string buffer too small
ORA-06512: 在 line 14
使用F9报错
[Error] ORA-00942 (29: 11): PL/SQL: ORA-00942: 表或视图不存在
表
create table tab_del_recored( SID# number, USERNAME varchar2(100), PROGRAM# varchar2(100), MACHINE varchar2(100), IPADD varchar2(32), MODITIME date, TABLE_NAME varchar2(100), TYPE_TRI varchar2(10) );
触发器
/* Formatted on 2020/7/1 15:27:33 (QP5 v5.256.13226.35510) */ CREATE OR REPLACE TRIGGER USERSES_tr BEFORE DELETE ON SCOTT.USERSES FOR EACH ROW DECLARE V_SYSDATE DATE DEFAULT SYSDATE; V_TABLE_NAME VARCHAR2 (100); V_TRI_TYPE VARCHAR2 (100); V_ID NUMBER; V_USERNAME VARCHAR2 (100); V_PROGRAM VARCHAR2 (100); V_MACHINE VARCHAR2 (100); V_IP VARCHAR2 (100); BEGIN V_TABLE_NAME := 'SCOTT_USERSES'; V_TRI_TYPE := 'DELETE'; SELECT sid, username, program, machine, SYS_CONTEXT ('userenv', 'ip_address') INTO V_ID, V_USERNAME, V_PROGRAM, V_MACHINE, V_IP FROM v$session WHERE audsid = USERENV ('sessionid'); INSERT INTO tab_del_recored (SID#, USERNAME, PROGRAM#, MACHINE, IPADD, MODITIME, TABLE_NAME, TYPE_TRI) VALUES (V_ID, V_USERNAME, V_PROGRAM, V_MACHINE, V_IP, V_SYSDATE, V_TABLE_NAME, V_TRI_TYPE); END;
直接使用sql是可以执行的,但是在触发器的编译中会报错。
查阅资料,
需要赋予权限
使用sys账号执行
grant select on sys.v_$session to SCOTT;
分类:
Oracle
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构