Oracle PLS-00103:遇到符号“;如果;
我正在这样做Oracle PLS-00103:遇到符号“;如果;,oracle,Oracle,我正在这样做 DECLARE v_Valid_Cnt NUMBER; BEGIN SELECT COUNT(*) cnt INTO v_Valid_Cnt FROM ( SELECT * FROM TABLE1 MINUS SELECT * FROM TABLE2 ); dbms_output.put_line('CNT'||v_Valid_Cnt); IF (v_Valid_Cnt = 0) THEN SELECT 'IFSTMT' FROM DUAL; ELSE
DECLARE v_Valid_Cnt NUMBER;
BEGIN
SELECT COUNT(*) cnt INTO v_Valid_Cnt
FROM
(
SELECT * FROM TABLE1
MINUS
SELECT * FROM TABLE2
);
dbms_output.put_line('CNT'||v_Valid_Cnt);
IF (v_Valid_Cnt = 0)
THEN
SELECT 'IFSTMT' FROM DUAL;
ELSE
SELECT 'ELSESTMT' FROM DUAL;
END IF;
END;
我可以将dbms输出正确地视为0,在检查是否存在else条件时,我得到了错误PLS-00428:当您执行BEGIN->您已进入PL/SQL世界时,此SELECT语句中应包含INTO子句 在PL/SQL中,您可以执行SELECT,但它是SELECT INTO 这项工作:
set serveroutput on
DECLARE
v_valid_cnt NUMBER;
message varchar2(25);
BEGIN
SELECT
COUNT(*) cnt
INTO v_valid_cnt
FROM
(
SELECT
*
FROM
employees
MINUS
SELECT
*
FROM
emps_excel_copy
);
dbms_output.put_line('CNT: ' || v_valid_cnt);
IF
( v_valid_cnt = 0 )
THEN
SELECT
'IFSTMT' into message
FROM
dual;
ELSE
SELECT
'ELSESTMT' into message
FROM
dual;
END IF;
-- and don't forget to print your message!
dbms_output.put_line(message);
END;
我实际上没有看到上面的
ELSE
情况。你的意思是包括一个吗?在你的IF
之前有一个结尾:
。它不应该在那里。它应该在结束IF之后代码>。您也没有其他条件。我已更新了我的问题..,为什么需要Into子句?在我的例子中,如果cnt=0,那么我将不做任何事情,我将执行Delete和Insert语句