我我的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'的類型是一個問題。 –