Любой оператор Select внутри кода PL / SQL нуждается в предложении INTO, кроме тех, которые вызываются из курсора или внутри него.В вашем случае вам не нужно вызывать какой-либо оператор Select, а просто назначить статические строковые значения ('TRUE', 'FALSE') или псевдоколонки, независимые от SQL, такие как sqlcode
или sqlerrm
, для уже определенных переменных.
Итак, рассмотрите возможность использования:
DECLARE
STATUS VARCHAR2(128) := 'TRUE';
MESSAGE VARCHAR2(128);
BEGIN
UPDATE MYTABLE
SET COL1 = 400
WHERE USERNAME = 'bigtunacan' AND pk = 12345;
INSERT INTO MYTABLE (username, col1, col2)
VALUES('bigtunacan', 400, 'foo');
-- SELECT 'TRUE' AS STATUS, '' AS MSG FROM MYTABLE WHERE ROWNUM = 1;
-- completely remove this above row, STATUS is already initialized as TRUE
COMMIT;
EXCEPTION
WHEN OTHERS THEN
ROLLBACK;
STATUS := 'FALSE';
RAISE_APPLICATION_ERROR(-20333,'Caution : An error was encountered -
'||SQLCODE||' -ERROR- '||SQLERRM);
END;