Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Excepciones en Procedimientos Almacenados

Estas en el tema de Excepciones en Procedimientos Almacenados en el foro de SQL Server en Foros del Web. Hola gente: Estoy trabajando en un proyecto de consola de Java conectado a una base de datos SQL Server. Tengo el siguiente procedimiento almacenado que, ...
  #1 (permalink)  
Antiguo 27/09/2011, 14:37
 
Fecha de Ingreso: septiembre-2011
Mensajes: 40
Antigüedad: 12 años, 7 meses
Puntos: 0
Pregunta Excepciones en Procedimientos Almacenados

Hola gente:

Estoy trabajando en un proyecto de consola de Java conectado a una base de datos SQL Server.

Tengo el siguiente procedimiento almacenado que, intento, me ataje los errores y no deje ingresar cualquier información:


CREATE PROCEDURE ProcedAlmac_Persona
@nombre varchar(30),
@apellido varchar(20),
@rut varchar(12)
AS
BEGIN
INSERT INTO
tbl_persona
VALUES (
@nombre,
@apellido,
@rut);
END


Quiero validar que el RUT sea de 12 digitos, el nombre de mínimo 2 a 30 caracteres y el apellido de 2 a 20 dígitos.




Por otro lado, tengo la consola de Java:

package Inicio;

import java.io.*;
import java.util.*;

public class Menu {

public static void main(String args[])throws IOException{

Scanner consola = new Scanner(System.in);
int opcion = 0;

while (opcion == 0){

// TODO Auto-generated method stub

System.out.println ("************************************");
System.out.println ("************************************");
System.out.println ("** **");
System.out.println ("** MODULO DE CARGAS **");
System.out.println ("** **");
System.out.println ("** 1 - Ingreso de datos **");
System.out.println ("** 2 - Mostrar datos **");
System.out.println ("** 3 - Modificar datos **");
System.out.println ("** 4 - Eliminar datos **");
System.out.println ("** 5 - Salir **");
System.out.println ("** **");
System.out.println ("************************************");
System.out.println ("************************************");

System.out.println ("");

System.out.println(" Seleccione la opcion que desee: ");
opcion = consola.nextInt();

switch (opcion) {
case 1:
System.out.println("Opcion 1: Ingreso de datos");
opcion =1;
break;
case 2:
System.out.println("Opcion 2: Mostrar datos ");
opcion =2;
break;
case 3:
System.out.println("Opcion 3: Modificar datos ");
opcion =3;
break;
case 4:
System.out.println("Opcion 4: Eliminar datos ");
opcion =4;
break;
case 5:
System.out.println("Opcion 5: Salir ");
System.exit(5);
break;
default:
System.out.println("Seleccion no valida");
break;
}
}

}

}

Ayuda, porfa.
  #2 (permalink)  
Antiguo 27/09/2011, 15:19
 
Fecha de Ingreso: septiembre-2011
Mensajes: 40
Antigüedad: 12 años, 7 meses
Puntos: 0
Respuesta: Excepciones en Procedimientos Almacenados

Intento hacer esto en mi procedimiento almacenado, pero no resulta tampoco:


USE PRUEBA
GO

CREATE PROCEDURE ProcedAlmac_Excepciones
@nombre varchar(30),
@apellido varchar(20),
@rut varchar(12)
AS
IF ((@nombre <2) AND (@nombre >30))
IF((@apellido <2) AND (@apellido >20))
IF (@rut != 12)


BEGIN
PRINT 'El nombre debe tener entre 2 a 30 caracteres'
PRINT 'El apellido debe tener entre 2 a 20 caracteres'
PRINT 'El RUT debe tener los 12 caracteres incluyendo los puntos y el guion'
RETURN
END
ELSE

BEGIN
INSERT INTO
tbl_persona
VALUES (
@nombre,
@apellido,
@rut);
PRINT 'EL REGISTRO SE HA INGRESADO CORRECTAMENTE'
END
  #3 (permalink)  
Antiguo 27/09/2011, 15:33
 
Fecha de Ingreso: septiembre-2011
Mensajes: 40
Antigüedad: 12 años, 7 meses
Puntos: 0
Respuesta: Excepciones en Procedimientos Almacenados

Intento hacer lo siguiente:


USE PRUEBA

GO



CREATE PROCEDURE ProcedAlmac_Excepciones
@nombre varchar(30),
@apellido varchar(20),
@rut varchar(12)
AS
IF ((@nombre <2) AND (@nombre >30))
BEGIN
PRINT 'EL NOMBRE DEBE TENER ENTRE 2 Y 30 CARACTERES'
RETURN
END

IF((@apellido <2) AND (@apellido >20))
BEGIN
PRINT 'EL APELLIDO DEBE TENER ENTRE 2 Y 20 CARACTERES'
RETURN
END

IF (@rut != 12)
BEGIN
PRINT 'EL USUARIO YA EXISTE EN LA BASE DE DATOS'
RETURN
END
ELSE

BEGIN
INSERT INTO
tbl_persona
VALUES (
@nombre,
@apellido,
@rut);
PRINT 'EL REGISTRO SE HA INGRESADO CORRECTAMENTE'
END



Pero me tira errores:


Exception in thread "main" com.microsoft.sqlserver.jdbc.SQLServerException: Error de conversión al convertir el valor varchar 'O' al tipo de datos int.
at com.microsoft.sqlserver.jdbc.SQLServerException.ma keFromDatabaseError(Unknown Source)
at com.microsoft.sqlserver.jdbc.IOBuffer.processPacke ts(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.se ndExecute(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.do Execute(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerPreparedStat ement.execute(Unknown Source)
at ProcedimientoAlmacenado.callableDemo.main(callable Demo.java:72)

AYUDAAAAAAAAAAAAA!!!!!!!!!!!!
  #4 (permalink)  
Antiguo 27/09/2011, 15:36
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Excepciones en Procedimientos Almacenados

y porque no usas la funcion len para saber el tamaño de tus cadenas

if (len(@variable)=1) then
begin
end


Saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me

Etiquetas: consola, java, procedimiento_almacenado
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:25.