Ошибка компиляции в процедуре в Oracle - PullRequest
0 голосов
/ 01 октября 2019

Я новичок в oracle. Итак, я создаю процедуру, которая имеет все функции вставки, обновления, удаления и выбора метода. Так что, когда я нажимаю кнопку компиляции, результат:

Warning: compiled but with compilation errors

Но я не могу понять, где была ошибка, которую я сделал. Моя таблица:

enter image description here

Теперь я попробовал следующую процедуру:

CREATE OR REPLACE PROCEDURE OT.ALL_CRUD_PERSON(DATA1 VARCHAR2,
ID PERSON.ID%TYPE,
NAME PERSON.NAME%TYPE,
AGE  PERSON.AGE%TYPE,
R_C OUT SYS_REFCURSOR)
IS 

CURSOR CUR IS
SELECT MAX(ID) FROM OT.PERSON;
BEGIN
IF DATA1='INSERT' THEN
INSERT INTO OT.PERSON(ID,NAME,AGE) VALUES (CUR,NAME,AGE);
END IF;


IF DATA1='UPDATE' THEN
UPDATE OT.PERSON SET NAME=NAME,AGE=AGE WHERE ID=ID;
END IF;

IF DATA1='DELETE' THEN
DELETE FROM OT.PERSON WHERE ID=ID;
END IF;

IF DATA1='SELECT' THEN
OPEN R_C FOR
SELECT * FROM OT.PERSON;
END IF;

END;
/

Кроме того, я хочу спросить, это хороший процесс, чтобы поместить все функции в одну и ту же процедуру?

1 Ответ

1 голос
/ 01 октября 2019

Проблема 1

INSERT INTO PERSON(ID,NAME,AGE) VALUES (CUR,NAME,AGE);

Это приведет к ошибке

(19,41): PL / SQL: ORA-00904: "CUR": неверный идентификатор

Возможно, должно быть

INSERT INTO PERSON(ID,NAME,AGE) VALUES (ID,NAME,AGE);

Это, по крайней мере, скомпилируется без ошибок.

Похоже, вы используете Toad ... Я знаю, что если вы используете SQL Developer, он автоматически покажет вам ошибки, когда вы компилируете PL / SQL с обратной связью компилятора.

Кроме того, задайте себе этот вопрос - хотите ли вы из-за ошибки, для вызова сделать ОБНОВЛЕНИЕ, чтобы случайно выполнить УДАЛЕНИЕ?

Я бы предложил вам разбить эти операции на отдельныхфункции / процедуры - и свяжите их вместе, используя ПАКЕТ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...