вставить функцию с приглашением пользователя - PullRequest
0 голосов
/ 08 января 2019

Я пытаюсь сделать функцию 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:

1 Ответ

0 голосов
/ 08 января 2019

Функция Oracle LENGTH имеет следующий синтаксис:

ДЛИНА (строка1)

Подробнее об этом можно прочитать здесь: https://www.techonthenet.com/oracle/functions/length.php

В вашем коде вместо IF CNP.LENGTH = 13 вы должны написать следующее:

IF LENGTH(CNP) = 13

Надеюсь, я помог!

...