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

Error en la llamada a procedimiento almacenado

Estas en el tema de Error en la llamada a procedimiento almacenado en el foro de Bases de Datos General en Foros del Web. Hola a tod@s!! Estoy creando un procedimiento almacenado en SQL SERVER y el procedimiento está bien, pero me da un error en la llamada. El ...
  #1 (permalink)  
Antiguo 31/05/2004, 13:21
 
Fecha de Ingreso: mayo-2004
Ubicación: Valladolid (Spain)
Mensajes: 81
Antigüedad: 20 años
Puntos: 0
Exclamación Error en la llamada a procedimiento almacenado

Hola a tod@s!!
Estoy creando un procedimiento almacenado en SQL SERVER y el procedimiento está bien, pero me da un error en la llamada.

El código es:
CREATE PROCEDURE PNuevoVeterinario
@Dni CHAR(9), @Telefono CHAR (9), @NumColeg CHAR(6),
@Nom VARCHAR(25), @Apel1 VARCHAR(20), @Apel2 VARCHAR(20), @Direccion VARCHAR(25), @Poblacion VARCHAR(25),
@Provincia VARCHAR (25),
@FAlta DATETIME, @FBaja DATETIME
AS if (SELECT Count(*) FROM Veterinarios WHERE DniVet=@Dni)>0 RAISERROR('No se puede grabar el veterinario, ya existe uno con DNI: %s',8,1,@Dni)
else
INSERT INTO Veterinarios VALUES(@Dni,@Nom,@Apel1,@Apel2,@Direccion,@Poblaci on,@Provincia,@Telefono,@FAlta,@FBaja,@NumColeg)
GO
EXEC PNuevoVeterinario '12345678Z','Lucas','Pérez','Rodriguez','C/Saldaña,3,4ºD','Guardo','Palencia','979854632','25-5-2001','2-2-2003','479854'
--Error al convertir el tipo de datos varchar a datetime. Este es el error que me da al llamarlo, y no logro entender por qué

si alguien sabe algo, agradecería muchísimo una ayuda, porque yo ya no sé qué es lo que puede pasarle.
  #2 (permalink)  
Antiguo 31/05/2004, 13:31
Avatar de Avelar  
Fecha de Ingreso: noviembre-2002
Ubicación: Ensenada, Baja California, México
Mensajes: 673
Antigüedad: 21 años, 5 meses
Puntos: 1
Trata de enviarle las fechas como tales:
Código:
  Convert(DateTime, '2001-05-25', 120) -- Convertir a fecha indicando al convert que la cadena de fecha está en 'yyyy/mm/dd'
__________________
Ariel Avelar
  #3 (permalink)  
Antiguo 01/06/2004, 01:00
 
Fecha de Ingreso: abril-2003
Ubicación: Madrid
Mensajes: 707
Antigüedad: 21 años, 1 mes
Puntos: 0
Si has copiado textualmente, fíjate, que el orden de los parámetros no es el correcto, después del DNI, debería venir el teléfono, y tú has puesto el nombre, siguiendo los parámetros, verás que las fechas no están donde corresponden, quizá sea por eso que te da el error, porque donde debiera recibir una fecha, le llega otra cosa....

Un saludo
  #4 (permalink)  
Antiguo 01/06/2004, 08:35
 
Fecha de Ingreso: mayo-2004
Ubicación: Valladolid (Spain)
Mensajes: 81
Antigüedad: 20 años
Puntos: 0
gracias chic@s!!! voy a probar con la función convert, a ver si funciona, y ya os cuento. Por cierto Teri, los parámetros están bien, porque lo que tú dices que no está ordenado son las variables del procedimiento, pero en la sentencia insert están correctos, en el orden adecuado.

Voy a probarlo.
  #5 (permalink)  
Antiguo 01/06/2004, 08:53
 
Fecha de Ingreso: abril-2003
Ubicación: Madrid
Mensajes: 707
Antigüedad: 21 años, 1 mes
Puntos: 0
Mira... en la declaración del procecimiento tienes esto

CREATE PROCEDURE PNuevoVeterinario
@Dni CHAR(9), @Telefono CHAR (9), @NumColeg CHAR(6),
@Nom VARCHAR(25), @Apel1 VARCHAR(20), @Apel2 VARCHAR(20), @Direccion VARCHAR(25), @Poblacion VARCHAR(25),
@Provincia VARCHAR (25),
@FAlta DATETIME, @FBaja DATETIME
AS

y cuando lo llamas, lo haces así:

EXEC PNuevoVeterinario '12345678Z','Lucas','Pérez','Rodriguez','C/Saldaña,3,4ºD','Guardo','Palencia','979854632','25 -5-2001','2-2-2003','479854'


lo primero es el DNI (bien), lo segundo es el nombre, y si embargo el PA espera @telefono, si continúas con los parámetros, verás a lo que me refería...

Un saludo
  #6 (permalink)  
Antiguo 02/06/2004, 00:17
 
Fecha de Ingreso: mayo-2004
Ubicación: Valladolid (Spain)
Mensajes: 81
Antigüedad: 20 años
Puntos: 0
Gracias Teri. Cuando leí tu primer mensaje no sabía muy bien a qué te referias exactamente, vamos que te entendí mal. Ya funciona. Acabo de empezar con esto de los Pa y Triggers y estoy un poco perdida. He cambiado lo que dices y funciona correctamente, pensé que el orden en que recibía los parámetros no era vita, y que lo importante es que estuvieran bien puestos en la sentencia INSERT.
Muchas gracias otra vez
Saludos
  #7 (permalink)  
Antiguo 02/06/2004, 01:15
 
Fecha de Ingreso: abril-2003
Ubicación: Madrid
Mensajes: 707
Antigüedad: 21 años, 1 mes
Puntos: 0
Ten en cuenta, que llamar a un procedimiento almacenado es como hacerlo a una función o procedimiento, al menos te sirvió de ayuda.

Saludos
  #8 (permalink)  
Antiguo 02/06/2004, 08:14
 
Fecha de Ingreso: mayo-2004
Ubicación: Valladolid (Spain)
Mensajes: 81
Antigüedad: 20 años
Puntos: 0
Si Teri, me sirvió de mucho tu ayuda. Vamos, que sin ella aún seguiría estancada. No me había cuenta de que la llamada no deja de ser una llamada a un procedimiento o función, pero pensé que lo importante era que el orden coincidiera con el orden de los parámetros en la sentencia insert, y no pensé nada más. Me equivoqué.

Gracias otra vez.
Un saludo
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 18:54.