DbVisualizer执行trigger报 ORA-00900: 无效 SQL 语句

本文详细记录了在部署Oracle数据库触发器时遇到的“ORA-00900:无效SQL语句”错误,分析了错误原因在于不同数据库连接工具对脚本结束符解释的不一致性,并提供了在Navicat和Dbvisualizer工具下正确的脚本执行方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. 项目中有个表触发器,上线前执行该trigger脚本时,始终报如下错误:

21:16:28 [END - 0 row(s), 0.000 secs] [Error Code: 900, SQL State:
42000] ORA-00900: 无效 SQL 语句 … 2 statement(s) executed, 0 row(s)
affected, exec/fetch time: 0.114/0.000 sec [0 successful, 1
warnings, 1 errors]

  1. trigger脚本如下(该SQL是直接从现有环境复制下来的,肯定没有问题):
CREATE OR REPLACE TRIGGER "WECHAT"."WXUSERLOGS"
 AFTER UPDATE OR INSERT ON WEIXIN_USER
 FOR EACH ROW 
BEGIN
 INSERT INTO WEIXIN_LOG("ID",OPEN_ID,USER_NAME,ACCT_OPEN_ID,"GROUP_ID")  
values (:new."ID",:new.OPEN_ID,:new.USER_NAME,:new.ACCT_OPEN_ID,:new."GROUP_ID");
END;
  1. 问题原因:
    数据库连接工具对脚本结束符解释不一致所致。后使用Navicat工具可正常执行,使用Dbvisualizer工具则需要再SQL前后添加 --/ 符号。

  2. 解决办法:
    在脚本前后分别加班 --/ 符号,如下:

--/
CREATE OR REPLACE TRIGGER "WECHAT"."WXUSERLOGS"
 AFTER UPDATE OR INSERT ON WEIXIN_USER
 FOR EACH ROW 
BEGIN
 INSERT INTO WEIXIN_LOG("ID",OPEN_ID,USER_NAME,ACCT_OPEN_ID,"GROUP_ID")  
values (:new."ID",:new.OPEN_ID,:new.USER_NAME,:new.ACCT_OPEN_ID,:new."GROUP_ID");
END;
--/
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值