我我的Oracle数据库上做了扳机,这里的代码PL/SQL的SQL * Plus语句忽略
CREATE OR REPLACE TRIGGER send_telegram_message
AFTER INSERT ON EVENT_LOG
FOR EACH ROW
DECLARE
GROUP_IDS VARCHAR(200);
BEGIN
IF :NEW.EVENT_ID AND :NEW.DESCRIPTION IS NOT NULL THEN
SELECT ID_GRUPO INTO GROUP_IDS
FROM V_EVENT_TELEGRAM
WHERE V_EVENT_TELEGRAM.EVENT_ID = :NEW.EVENT_ID;
TELEGRAM_BOT(GROUP_IDS,:NEW.DESCRIPTION);
END IF;
END;
当编译我收到以下错误:
错误(4, 3):PL/SQL:语句被忽略 错误(4,6):PLS-00382:表达式类型错误
问题似乎与group_ids变量的类型有关,我一直试图解决这个问题PLS-00382问题,但我不能。
的 “TELEGRAM_BOT()” 行是一个过程调用调用一个Java方法发布:
create or replace PROCEDURE telegram_bot (group_ids VARCHAR2, message VARCHAR2)
AS LANGUAGE JAVA
NAME 'TelegramBot.subMain(String,String)';
'IF:NEW.EVENT_ID AND:NEW.DESCRIPTION不为NULL THEN'是无效的sql语法。 – sagi
错误消息指向第4行(从DECLARE开始计数,因为它是PL/SQL错误),这是sagi指向的行。它说*表达*是错误的类型,不是一个变量,所以不知道为什么你认为'group_ids'的类型是一个问题。 –