Я пытаюсь сделать функцию Oracle для использования с Oracle SQL Developer так, чтобы пользователь мог набрать cnp
с клавиатуры, а если cnp
size = 13, тогда вставьте ее в таблицу, которую имеет пользователь загружен. если это не = 13, то появляется сообщение.
Я выполнил работу, но она показывает ошибки ... Я пытался, я задокументировал, но я не нашел, где я не прав.
вот моя таблица, сейчас я просто хочу cnp
добавить ее после того, как я добавлю остальные атрибуты в таблицу .:
CREATE TABLE CLIENT (
CODCLIENT NUMBER,
NUMECLIENT VARCHAR2(10),
PRENUMECLIENT VARCHAR2(15),
CNPCLIENT VARCHAR2(13),
SERIECLIENT VARCHAR2(2),
NUMARID VARCHAR2(6),
SEX VARCHAR2(10) CONSTRAINT NN_SEXC NOT NULL CONSTRAINT CK_SEXC CHECK((SEX) IN('MASCULIN','FEMININ')),
ADRESA VARCHAR2(100),
EMAIL VARCHAR2(50),
TELEFON VARCHAR2(13),
CONSTRAINT PK_CODCLIENT PRIMARY KEY (CODCLIENT)
);
А здесь отображается ошибка:
old:DECLARE
CNP varchar2(13);
BEGIN
CNP := '&X' ;
IF CNP.LENGTH = 13 THEN
INSERT INTO CLIENT(CNPCLIENT) VALUES(CNP);
ELSE
DBMS_OUTPUT.PUT_LINE('CNP INCORECT');
END IF;
END;
new:DECLARE
CNP varchar2(13);
BEGIN
CNP := '23241415151' ;
IF CNP.LENGTH = 13 THEN
INSERT INTO CLIENT(CNPCLIENT) VALUES(CNP);
ELSE
DBMS_OUTPUT.PUT_LINE('CNP INCORECT');
END IF;
END;
Error starting at line : 30 in command -
DECLARE
CNP varchar2(13);
BEGIN
CNP := '&X' ;
IF CNP.LENGTH = 13 THEN
INSERT INTO CLIENT(CNPCLIENT) VALUES(CNP);
ELSE
DBMS_OUTPUT.PUT_LINE('CNP INCORECT');
END IF;
END;
Error report -
ORA-06550: line 7, column 12:
PLS-00487: Invalid reference to variable 'CNP'
ORA-06550: line 7, column 5:
PL/SQL: Statement ignored
06550. 00000 - "line %s, column %s:\n%s"
*Cause: Usually a PL/SQL compilation error.
*Action: