Oracle ORA-12728:正则表达式插入中的范围无效

Oracle ORA-12728:正则表达式插入中的范围无效,oracle,stored-procedures,plsql,sql-insert,Oracle,Stored Procedures,Plsql,Sql Insert,插入表客户机时会出现错误,并且仅在我的计算机中出现,因为如果它设法加载表,则会与其他人一起测试。使用sqldeveloper 18.2和oracle database express edition 11g 表格: CREATE TABLE Clientes( DNI_CIF VARCHAR2(9) NOT NULL CHECK (REGEXP_LIKE(DNI_CIF, '[A-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][A-Z]')), Contrasena

插入表客户机时会出现错误,并且仅在我的计算机中出现,因为如果它设法加载表,则会与其他人一起测试。使用sqldeveloper 18.2和oracle database express edition 11g

表格:

CREATE TABLE Clientes(
DNI_CIF VARCHAR2(9) NOT NULL CHECK (REGEXP_LIKE(DNI_CIF, '[A-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][A-Z]')),
Contrasena VARCHAR2(25) NOT NULL,
Telefono NUMBER(9) NOT NULL,
Email VARCHAR2(25) UNIQUE,
TipoCliente VARCHAR2(25),
Nombre VARCHAR2(30) NOT NULL,
FormaPago VARCHAR2(20),
NumeroCuenta VARCHAR2 (24),
CancelacionesIndebidas INT CHECK (CancelacionesIndebidas BETWEEN 0 and 3),
PRIMARY KEY(DNI_CIF),
CONSTRAINT Clientes_chk1 CHECK (TipoCliente IN ('Particular', 'Empresa', 'Administracion Publica'))
);
INSERTS.insert_clientes('12312389P','12345678',666666666,'una@muno.com','Particular','Miguel de Unamuno','Transferencia','ES7119225879874039280971',0);
程序:

PROCEDURE insert_clientes(w_DNI_CIF clientes.dni_cif%TYPE,w_Contrasena clientes.contrasena%TYPE,w_Telefono clientes.telefono%TYPE,w_Email clientes.email%TYPE,
    w_TipoCliente clientes.tipocliente%TYPE,w_Nombre clientes.nombre%TYPE,
    w_FormaPago clientes.formapago%TYPE,w_NumeroCuenta clientes.numerocuenta%TYPE,
    w_CancelacionesIndebidas clientes.cancelacionesindebidas%TYPE);
CREATE OR REPLACE PACKAGE BODY INSERTS AS 


PROCEDURE insert_clientes(w_DNI_CIF clientes.dni_cif%TYPE,w_Contrasena clientes.contrasena%TYPE,w_Telefono clientes.telefono%TYPE,w_Email clientes.email%TYPE,
w_TipoCliente clientes.tipocliente%TYPE,w_Nombre clientes.nombre%TYPE,w_FormaPago clientes.formapago%TYPE,w_NumeroCuenta clientes.numerocuenta%TYPE,
w_CancelacionesIndebidas clientes.cancelacionesindebidas%TYPE)
IS

BEGIN

INSERT INTO Clientes (DNI_CIF,Contrasena,Telefono,Email,TipoCliente,Nombre,FormaPago,NumeroCuenta,CancelacionesIndebidas)
VALUES(w_DNI_CIF,w_Contrasena,w_Telefono,w_Email,w_TipoCliente,w_Nombre,w_FormaPago,w_NumeroCuenta,w_CancelacionesIndebidas);

END insert_clientes;
插入:

CREATE TABLE Clientes(
DNI_CIF VARCHAR2(9) NOT NULL CHECK (REGEXP_LIKE(DNI_CIF, '[A-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][A-Z]')),
Contrasena VARCHAR2(25) NOT NULL,
Telefono NUMBER(9) NOT NULL,
Email VARCHAR2(25) UNIQUE,
TipoCliente VARCHAR2(25),
Nombre VARCHAR2(30) NOT NULL,
FormaPago VARCHAR2(20),
NumeroCuenta VARCHAR2 (24),
CancelacionesIndebidas INT CHECK (CancelacionesIndebidas BETWEEN 0 and 3),
PRIMARY KEY(DNI_CIF),
CONSTRAINT Clientes_chk1 CHECK (TipoCliente IN ('Particular', 'Empresa', 'Administracion Publica'))
);
INSERTS.insert_clientes('12312389P','12345678',666666666,'una@muno.com','Particular','Miguel de Unamuno','Transferencia','ES7119225879874039280971',0);

您需要将包的包规格部分中的
insert\u clients
过程包装为
创建或替换包插页作为开头的
和结尾的
插页最后<代码>末端插入

SQL> CREATE OR REPLACE PACKAGE INSERTS AS
  PROCEDURE insert_clientes(w_DNI_CIF                clientes.dni_cif%TYPE,
                            w_Contrasena             clientes.contrasena%TYPE,
                            w_Telefono               clientes.telefono%TYPE,
                            w_Email                  clientes.email%TYPE,
                            w_TipoCliente            clientes.tipocliente%TYPE,
                            w_Nombre                 clientes.nombre%TYPE,
                            w_FormaPago              clientes.formapago%TYPE,
                            w_NumeroCuenta           clientes.numerocuenta%TYPE,
                            w_CancelacionesIndebidas clientes.cancelacionesindebidas%TYPE);
END INSERTS;
/
SQL> CREATE OR REPLACE PACKAGE BODY INSERTS AS
  PROCEDURE insert_clientes(w_DNI_CIF                clientes.dni_cif%TYPE,
                            w_Contrasena             clientes.contrasena%TYPE,
                            w_Telefono               clientes.telefono%TYPE,
                            w_Email                  clientes.email%TYPE,
                            w_TipoCliente            clientes.tipocliente%TYPE,
                            w_Nombre                 clientes.nombre%TYPE,
                            w_FormaPago              clientes.formapago%TYPE,
                            w_NumeroCuenta           clientes.numerocuenta%TYPE,
                            w_CancelacionesIndebidas clientes.cancelacionesindebidas%TYPE) IS

  BEGIN

    INSERT INTO Clientes
      (DNI_CIF,
       Contrasena,
       Telefono,
       Email,
       TipoCliente,
       Nombre,
       FormaPago,
       NumeroCuenta,
       CancelacionesIndebidas)
    VALUES
      (w_DNI_CIF,
       w_Contrasena,
       w_Telefono,
       w_Email,
       w_TipoCliente,
       w_Nombre,
       w_FormaPago,
       w_NumeroCuenta,
       w_CancelacionesIndebidas);

  END insert_clientes;
END inserts;
/
并按以下方式执行(因此,为
w\u dni\u cif
列提供的字符串没有问题):


您需要将包的包规格部分中的
insert\u clients
过程包装为
创建或替换包插页作为开头的
和结尾的
插页最后<代码>末端插入

SQL> CREATE OR REPLACE PACKAGE INSERTS AS
  PROCEDURE insert_clientes(w_DNI_CIF                clientes.dni_cif%TYPE,
                            w_Contrasena             clientes.contrasena%TYPE,
                            w_Telefono               clientes.telefono%TYPE,
                            w_Email                  clientes.email%TYPE,
                            w_TipoCliente            clientes.tipocliente%TYPE,
                            w_Nombre                 clientes.nombre%TYPE,
                            w_FormaPago              clientes.formapago%TYPE,
                            w_NumeroCuenta           clientes.numerocuenta%TYPE,
                            w_CancelacionesIndebidas clientes.cancelacionesindebidas%TYPE);
END INSERTS;
/
SQL> CREATE OR REPLACE PACKAGE BODY INSERTS AS
  PROCEDURE insert_clientes(w_DNI_CIF                clientes.dni_cif%TYPE,
                            w_Contrasena             clientes.contrasena%TYPE,
                            w_Telefono               clientes.telefono%TYPE,
                            w_Email                  clientes.email%TYPE,
                            w_TipoCliente            clientes.tipocliente%TYPE,
                            w_Nombre                 clientes.nombre%TYPE,
                            w_FormaPago              clientes.formapago%TYPE,
                            w_NumeroCuenta           clientes.numerocuenta%TYPE,
                            w_CancelacionesIndebidas clientes.cancelacionesindebidas%TYPE) IS

  BEGIN

    INSERT INTO Clientes
      (DNI_CIF,
       Contrasena,
       Telefono,
       Email,
       TipoCliente,
       Nombre,
       FormaPago,
       NumeroCuenta,
       CancelacionesIndebidas)
    VALUES
      (w_DNI_CIF,
       w_Contrasena,
       w_Telefono,
       w_Email,
       w_TipoCliente,
       w_Nombre,
       w_FormaPago,
       w_NumeroCuenta,
       w_CancelacionesIndebidas);

  END insert_clientes;
END inserts;
/
并按以下方式执行(因此,为
w\u dni\u cif
列提供的字符串没有问题):