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

Procedimiento almacenado

Estas en el tema de Procedimiento almacenado en el foro de SQL Server en Foros del Web. Hola, estoy intentado hacer un procedimiento almacenado que me devuelva dos valores de una base de datos al pasarle un parámetro. He hecho esto: CREATE ...
  #1 (permalink)  
Antiguo 11/06/2012, 05:32
 
Fecha de Ingreso: junio-2012
Mensajes: 25
Antigüedad: 11 años, 10 meses
Puntos: 0
Procedimiento almacenado

Hola, estoy intentado hacer un procedimiento almacenado que me devuelva dos valores de una base de datos al pasarle un parámetro. He hecho esto:

CREATE PROCEDURE info_dorsal @nomeq varchar(20), @director varchar(50)
AS
IF @nomeq IS NULL OR @director IS NULL
BEGIN
RAISERROR ('NULL values are not allowed', 14, 1)
RETURN
END
SELECT * FROM dorsal WHERE nomeq=@nomeq AND director=@director

Me debería de devolver el nombre del equipo y el director de una base de datos de ciclistas pasandole el dorsal, pero al ejecutarlo me da error:

Msg 2714, Level 16, State 3, Procedure info_dorsal, Line 8
There is already an object named 'info_dorsal' in the database.

¿Alguien que pueda ayudarme?
  #2 (permalink)  
Antiguo 11/06/2012, 07:20
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: Procedimiento almacenado

Prueba con algo asi y nos comentas :)

Código SQL:
Ver original
  1. CREATE PROCEDURE sp_info_dorsal @nomeq VARCHAR(20), @director VARCHAR(50)
  2. AS
  3. IF @nomeq IS NULL OR @director IS NULL
  4. BEGIN
  5. RAISERROR ('NULL values are not allowed', 14, 1)
  6. RETURN
  7. END
  8. SELECT * FROM dorsal WHERE nomeq=@nomeq AND director=@director
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 11/06/2012, 07:34
 
Fecha de Ingreso: junio-2012
Mensajes: 25
Antigüedad: 11 años, 10 meses
Puntos: 0
Respuesta: Procedimiento almacenado

Hola Libras, gracias por responder.
He probado el código y al darle a Execute no me devuelve ningún error pero tampoco me devuelve el nombre y el director.
Debo añadir algo más?
  #4 (permalink)  
Antiguo 11/06/2012, 08:32
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: Procedimiento almacenado

como executas tu procedure

exec procedure @parametros?

el select con los parametros que estas mandando regresa algun valor?

Saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #5 (permalink)  
Antiguo 11/06/2012, 08:48
 
Fecha de Ingreso: junio-2012
Mensajes: 25
Antigüedad: 11 años, 10 meses
Puntos: 0
Respuesta: Procedimiento almacenado

Primero con el botón derecho en la tabla le doy a añadir un nuevo trigger, añado el código y le doy a Execute en el mismo SQL server management

No es asi?
  #6 (permalink)  
Antiguo 11/06/2012, 08:58
 
Fecha de Ingreso: junio-2012
Mensajes: 25
Antigüedad: 11 años, 10 meses
Puntos: 0
Respuesta: Procedimiento almacenado

Si ejecuto solo el select:

SELECT * FROM dorsal WHERE nomeq=@nomeq AND director=@director

Me aparece este error:

Msg 137, Level 15, State 2, Line 1
Must declare the scalar variable "@nomeq".
  #7 (permalink)  
Antiguo 11/06/2012, 09:02
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Procedimiento almacenado

¿añadir un nuevo trigger?, Que no quedamos en que era un STORE PROCEDURE
__________________
MCTS Isaias Islas
  #8 (permalink)  
Antiguo 11/06/2012, 09:09
 
Fecha de Ingreso: junio-2012
Mensajes: 25
Antigüedad: 11 años, 10 meses
Puntos: 0
Respuesta: Procedimiento almacenado

Perdón perdón, es que he escrito en otro post hablando de un trigger y me he confundido.

En el sql server management tengo un archivo .sql con el precedimiento y le doy a Execute para ejecutarlo. No se si hay que hacerlo de otra forma.
  #9 (permalink)  
Antiguo 11/06/2012, 09:22
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Procedimiento almacenado

Para CREAR un procedimiento, deberias tener como inicio de tu codigo CREATE PROCEDURE <Name>, de lo contrario, solo estas ejecutando T-SQL
__________________
MCTS Isaias Islas
  #10 (permalink)  
Antiguo 11/06/2012, 09:36
 
Fecha de Ingreso: junio-2012
Mensajes: 25
Antigüedad: 11 años, 10 meses
Puntos: 0
Respuesta: Procedimiento almacenado

Sí ya lo tengo, el código es este:

CREATE PROCEDURE info_dorsal @nomeq varchar(20), @director varchar(50)
AS
IF @nomeq IS NULL OR @director IS NULL
BEGIN
RAISERROR ('NULL values are not allowed', 14, 1)
RETURN
END
SELECT * FROM dorsal WHERE nomeq=@nomeq AND director=@director
  #11 (permalink)  
Antiguo 11/06/2012, 10:12
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: Procedimiento almacenado

como estas "creando" el procedure? si ya executaste el codigo necesitas ejecutar exec procedure_name parameters para que te regrese un resultado en este caso seria

exec sp_info_dorsal 'director', 'dorsal'

Saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #12 (permalink)  
Antiguo 11/06/2012, 10:28
 
Fecha de Ingreso: junio-2012
Mensajes: 25
Antigüedad: 11 años, 10 meses
Puntos: 0
Respuesta: Procedimiento almacenado

Creo que el fallo es que no se como crear el Procedure en el sql server management.
Como hay que hacerlo?
  #13 (permalink)  
Antiguo 11/06/2012, 11:07
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: Procedimiento almacenado

pregunta, como ejecutas un query en sql server management studio?

Saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #14 (permalink)  
Antiguo 11/06/2012, 11:15
 
Fecha de Ingreso: junio-2012
Mensajes: 25
Antigüedad: 11 años, 10 meses
Puntos: 0
Respuesta: Procedimiento almacenado

Con el botón Execute y la salida me aparece en la parte inferior.
  #15 (permalink)  
Antiguo 11/06/2012, 11:37
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: Procedimiento almacenado

pues en la pantalla del management studio pones tu codigo


Código SQL:
Ver original
  1. ---------------------------
  2. CREATE PROCEDURE sp_info_dorsal @nomeq VARCHAR(20), @director VARCHAR(50)
  3. AS
  4. IF @nomeq IS NULL OR @director IS NULL
  5. BEGIN
  6. RAISERROR ('NULL values are not allowed', 14, 1)
  7. RETURN
  8. END
  9. SELECT * FROM dorsal WHERE nomeq=@nomeq AND director=@director
  10. GO
  11. EXEC sp_info_dorsal 'nombre','director'
  12. GO
  13. ----------------------
y le das al boton "execute"

y nos cuentas :)

Saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #16 (permalink)  
Antiguo 11/06/2012, 11:45
 
Fecha de Ingreso: junio-2012
Mensajes: 25
Antigüedad: 11 años, 10 meses
Puntos: 0
Respuesta: Procedimiento almacenado

Esta es la salida :(

Msg 208, Level 16, State 1, Procedure info_dorsal, Line 9
Invalid object name 'dorsal'.

Por cierto muchas gracias por el interes y la ayuda!
  #17 (permalink)  
Antiguo 11/06/2012, 11:46
 
Fecha de Ingreso: junio-2012
Mensajes: 25
Antigüedad: 11 años, 10 meses
Puntos: 0
Respuesta: Procedimiento almacenado

Pueder ser el problema que la columna dorsal está en una tabla y nmoeq y director en otra tabla diferente?
  #18 (permalink)  
Antiguo 11/06/2012, 11:49
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Procedimiento almacenado

DORSAL, es tu tabla, ¿no?, segun veo hay un FROM dorsal..............

Por otro lado, no nombre a tu procedimiento con SP_, colo un USP_ o algo diferente a SP_
__________________
MCTS Isaias Islas
  #19 (permalink)  
Antiguo 11/06/2012, 11:53
 
Fecha de Ingreso: junio-2012
Mensajes: 25
Antigüedad: 11 años, 10 meses
Puntos: 0
Respuesta: Procedimiento almacenado

No, el problema es con dos tablas, sbo.tabla1 donde se encuentra la columna dorsal y la sbo.tabla2 donde se encuentran las columnas nomeq y director.
Lo que yo quiero es que me salgan todos los dorsales junto con su respectivo nomeq y director.
  #20 (permalink)  
Antiguo 11/06/2012, 12:15
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: Procedimiento almacenado

madre mia entonces dorsal no es una tabla??? porque ahi estas diciendo que traiga todo de la "tabla" dorsal, si no es una tabla entonces tendrias que poner

select dorsal from tabla no
select * from dorsal

Saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #21 (permalink)  
Antiguo 11/06/2012, 12:28
 
Fecha de Ingreso: junio-2012
Mensajes: 25
Antigüedad: 11 años, 10 meses
Puntos: 0
Respuesta: Procedimiento almacenado

Ahora sí que me he perdido completamente, el codigo final que sería asi?

---------------------------
CREATE PROCEDURE sp_info_dorsal @nomeq varchar(20), @director varchar(50)
AS
IF @nomeq IS NULL
BEGIN
RAISERROR ('NULL values are not allowed', 14, 1)
RETURN
END
select dorsal from tabla no
select * from dorsal
go
exec sp_info_dorsal 'dorsal'
go
---------------------------
  #22 (permalink)  
Antiguo 11/06/2012, 12:32
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: Procedimiento almacenado

a ver tienes los datos en 2 tablas o sea que tienes el dorsal en una y los datos del nombre y del director en otra?? y querias que con un select * from dorsal saliera?? estas mal :(, cual es el campo que sirve para unir las 2 tablas? tiene un campo en comun o no??
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #23 (permalink)  
Antiguo 11/06/2012, 12:57
 
Fecha de Ingreso: junio-2012
Mensajes: 25
Antigüedad: 11 años, 10 meses
Puntos: 0
Respuesta: Procedimiento almacenado

Sí los datos están como tu dices.
El dato común a ambas es nomeq.
  #24 (permalink)  
Antiguo 11/06/2012, 13:09
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: Procedimiento almacenado

ok entonces tu procedure quedaria asi:

Código SQL:
Ver original
  1. ---------------------------
  2. CREATE PROCEDURE sp_info_dorsal @nomeq VARCHAR(20), @director VARCHAR(50)
  3. AS
  4. IF @nomeq IS NULL
  5. BEGIN
  6. RAISERROR ('NULL values are not allowed', 14, 1)
  7. RETURN
  8. END
  9. SELECT t1.dorsal FROM sbo.tabla1 AS t1
  10. LEFT JOIN sbo tabla2 AS t2 ON (t1.nomeq=t2.nomeq)
  11. WHERE t2.nomeq=@nomeq AND t2.director=@director
  12. GO
  13. EXEC sp_info_dorsal 'nombre','director'
  14. GO
  15. ---------------------------

P.D: si no funciona como te lo pongo acomoda los nombres de las tablas que tu usas asi como los campos que usas :)
Saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #25 (permalink)  
Antiguo 11/06/2012, 13:10
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Procedimiento almacenado

me gustaria que JLOCI88, nos dijera su nivel de conocimientos en SQL Server.....
__________________
MCTS Isaias Islas
  #26 (permalink)  
Antiguo 11/06/2012, 13:21
 
Fecha de Ingreso: junio-2012
Mensajes: 25
Antigüedad: 11 años, 10 meses
Puntos: 0
Respuesta: Procedimiento almacenado

Muchas gracias Libras, tengo cambiar los nombres sí y leerlo y entenderlo bien.
Pues llevo poco tiempo iislas, pero con muchas ganas de aprender.

Etiquetas: procedimiento, select, almacenar
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 10:59.