31/05/2011, 22:08
|
| | Fecha de Ingreso: mayo-2011
Mensajes: 3
Antigüedad: 13 años, 5 meses Puntos: 0 | |
Respuesta: Navegando con gotoAndPlay hola soy nuevo en este foro necesito ayuda alguien me podria ayudar para que este codigo solo me deje insertar carcateres de la A-Z en un campo de una tabla con procedimientos almacenados me encotre este codigo en la red pero este hace que no permita caracteres de espacio al / yo necesito que solo me deje insetar caracteres de A-Z:
CREATE TABLE PRUEBA
(
IDCLAVE CHAR(10) PRIMARY KEY,
DESCRIP VARCHAR(30)
);
Ahora crearemos una funcion solo para validar caracteres ASCII que no esten entre 32 y 47, ya que insertaremos en un campo que es llave primaria, recuerda que las claves primarias no contienes espacios ni caracteres ascii entre 32 y 47, en este ejemplo que pondre:
CREATE FUNCTION OK
(CADENA VARCHAR(10))
RETURNS INTEGER
BEGIN
DECLARE LONG_CAD INT;
DECLARE CARASC INT;
DECLARE i INT DEFAULT 1 ;
DECLARE B INT DEFAULT 1;
declare C int;
SET LONG_CAD=LENGTH(CADENA);
IF LONG_CAD=1 OR LONG_CAD=0 THEN
SET B=0;
ELSEIF LONG_CAD>1 THEN
WHILE (i<=LONG_CAD AND B=1) DO
SET CARASC=ASCII(SUBSTR(CADENA,I,1));
SELECT CARASC BETWEEN 32 AND 47 INTO C;
IF C=0 THEN
SET i=i+1;
SET B=1;
ELSEIF C=1 THEN
SET B=0;
END IF;
END WHILE;
END IF;
RETURN B;
END;
Ahora el procedure que llamara a la funcion para validar :
CREATE PROCEDURE OKPRUEBA
(IN CADENA VARCHAR(10),IN DESCRIP VARCHAR(30))
BEGIN
IF OK(CADENA)=1 THEN
INSERT INTO PRUEBA VALUES(CADENA,DESCRIP);
SELECT 'ROW INSERTED OK' AS RESULTADO;
ELSEIF OK(CADENA)=0 THEN
SELECT 'EL CAMPO CLAVE CONTIENE CARACTERES NO VALIDOS' AS ERROR;
END IF;
END; |