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语句