Oracle ORA-12728:正则表达式插入中的范围无效
插入表客户机时会出现错误,并且仅在我的计算机中出现,因为如果它设法加载表,则会与其他人一起测试。使用sqldeveloper 18.2和oracle database express edition 11g 表格: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
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
列提供的字符串没有问题):