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

Usar Tabla en 1 Procedimiento Almacenado

Estas en el tema de Usar Tabla en 1 Procedimiento Almacenado en el foro de SQL Server en Foros del Web. Estoy en dificultad para entregar una tarea. Please Help me Necesito crear un Procedimiento almacenado para algo muy simple, pero sirva para ejecutarlo sobre distintas ...
  #1 (permalink)  
Antiguo 11/07/2010, 20:32
 
Fecha de Ingreso: julio-2010
Mensajes: 11
Antigüedad: 13 años, 9 meses
Puntos: 0
Sonrisa Usar Tabla en 1 Procedimiento Almacenado

Estoy en dificultad para entregar una tarea. Please Help me

Necesito crear un Procedimiento almacenado para algo muy simple, pero sirva para ejecutarlo sobre distintas tablas. Usando el nombre que se le indique como Parametro.
Por ejemplo:
CREATE PROCEDURE CREA_DIRECCIONES @Datos_ESCUELA varchar(50)
AS
UPDATE @Datos_ESCUELA SET DIRECCION =CALLE + ' ' +NUMERO + ',' + LOCALIDAD
GO
En este caso mi dificultad reside en que no me deja (SQL SERVER 2000) poner el nombre de la Tabla como una Variable o algo así de manera que yo pudiera darle el nombre de la tabla por parámetro y el Procedimiento me calculara la direccion para las distintas Tablas donde lo necesito y en cada oportunidad qu elo llame.

Si alguien pudieran ayudarme quedaría muy agradecido.
  #2 (permalink)  
Antiguo 12/07/2010, 08:26
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Respuesta: Usar Tabla en 1 Procedimiento Almacenado

Prueba asi:
Código SQL:
Ver original
  1. CREATE PROCEDURE CREA_DIRECCIONES
  2. @Datos_ESCUELA VARCHAR(50)
  3. AS
  4.  
  5. DECLARE @qry nvarchar(150)
  6.  
  7. SET @qry = N'UPDATE ' + @Datos_ESCUELA + ' SET DIRECCION =CALLE + '' '' +NUMERO + '','' + LOCALIDAD'
  8.  
  9. EXEC sp_executesql(@qry)
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #3 (permalink)  
Antiguo 12/07/2010, 09:36
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: Usar Tabla en 1 Procedimiento Almacenado

¿Cuantas veces habremos ya comentado sobre QUERY DINAMICO?
  #4 (permalink)  
Antiguo 12/07/2010, 14:22
Avatar de -rommel_  
Fecha de Ingreso: junio-2008
Ubicación: Lima
Mensajes: 360
Antigüedad: 15 años, 10 meses
Puntos: 1
Respuesta: Usar Tabla en 1 Procedimiento Almacenado

pero no te molestes... es su primer post... ya aprendera :D a usar el motro de busqueda
  #5 (permalink)  
Antiguo 13/07/2010, 10:12
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: Usar Tabla en 1 Procedimiento Almacenado

tienes razon, luz al que no ve.............
  #6 (permalink)  
Antiguo 13/07/2010, 13:55
 
Fecha de Ingreso: julio-2010
Mensajes: 11
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: Usar Tabla en 1 Procedimiento Almacenado

Cita:
Iniciado por flaviovich Ver Mensaje
Prueba asi:
Código SQL:
Ver original
  1. CREATE PROCEDURE CREA_DIRECCIONES
  2. @Datos_ESCUELA VARCHAR(50)
  3. AS
  4.  
  5. DECLARE @qry nvarchar(150)
  6.  
  7. SET @qry = N'UPDATE ' + @Datos_ESCUELA + ' SET DIRECCION =CALLE + '' '' +NUMERO + '','' + LOCALIDAD'
  8.  
  9. EXEC sp_executesql(@qry)

Agradezco en todo lo que vale vuestra desinteresada colaboracion, y pido disculpas por mi ignorancia.
  #7 (permalink)  
Antiguo 13/07/2010, 14:35
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: Usar Tabla en 1 Procedimiento Almacenado

En lo personal, no creo que seas IGNORANTE, mas bien, no sabes donde y como buscar, en este mismo foro existe una herramienta de busqueda, si lo haces por "QUERY DINAMICO" encontraras muchos ejemplos.

Saludos
  #8 (permalink)  
Antiguo 14/07/2010, 06:09
 
Fecha de Ingreso: julio-2010
Mensajes: 11
Antigüedad: 13 años, 9 meses
Puntos: 0
Sonrisa Respuesta: Usar Tabla en 1 Procedimiento Almacenado

Amigos:

Fue excelente la respuesta recibida pues me permitió avanzar en un tema ignorado para mi. Felicitaciones para Flaviovich, tu respuesta merece un SIETE.
Me entusiasmé mucho con la posibilidad de avanzar en SQL y me topé con un pequeño detalle, que no he podido resolver mirando los ejemplos, hasta ahora. Se trata del caso en que la sentencia SQL dentro del String contiene "constantes". Por ejemplo, si la sentencia tiene SOLO palabras claves y nombres de columnas NINGUN problema. Funciona de maravillas. Pero me tocó el caso de que tengo un UPDATE (por ejemplo) donde necesito asignar un valor (o texto) y no me resulta.
Supongamos que se trata de armar la siguiente sentencia:
UPDATE nombre_tabla SET campo_nombre='Viviana'.
He probado de distintas maneras y en muchos casos me reclama que Viviana no es el nombre de ninguna columna de la Tabla.
Les agradezco desde ya la atención que me puedan brindar para resolver esta última dificultad y prometo que una vez que aprenda estaré atento para apoyar a otros novatos en el tema.
  #9 (permalink)  
Antiguo 14/07/2010, 08:07
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Respuesta: Usar Tabla en 1 Procedimiento Almacenado

Tienes que pasar como parametro el (los) nombre(s) de la(s) columna(s) y concatenar a tu cadena.
Entendí bien tu problema?
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #10 (permalink)  
Antiguo 14/07/2010, 08:34
Avatar de -rommel_  
Fecha de Ingreso: junio-2008
Ubicación: Lima
Mensajes: 360
Antigüedad: 15 años, 10 meses
Puntos: 1
Respuesta: Usar Tabla en 1 Procedimiento Almacenado

pero cuantas variables va a tener?... tantos campos exista en UNA tabla?
mmm
a menos que recorra UNA CONSULTA de los campos de una tabla e IR CONCATENANDOLAS
en fin... pienso que el query dinamico sirve para solo UNA COSA no en forma general... Saludos!!!
  #11 (permalink)  
Antiguo 14/07/2010, 12:22
 
Fecha de Ingreso: julio-2010
Mensajes: 11
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: Usar Tabla en 1 Procedimiento Almacenado

GRACIAS A TODOS 1 VEZ MAS. El detalle de lo que intento lograr es el siguiente:

EXEC ACTUALIZA @nombre_tabla='TABLA_TEST',@nombre_campo='pedro'


CREATE PROCEDURE ACTUALIZA @nombre_tabla varchar(50), @nombre_campo nvarchar(10)
AS
declare @qry1 nvarchar(150)
declare @nombre_campo2 nvarchar(150)
--SET @nombre_campo2 =QUOTENAME(@nombre_campo)
SET @qry1 = N'UPDATE' + ' ' + @nombre_tabla + ' ' + 'SET' + ' ' + 'MF_NOMBRE' + '=' +QUOTENAME(@nombre_campo)

EXECUTE sp_executesql @qry1
GO
---- como verán solo intento a un campo cualquiera meterle un Nombre, en este caso 'Pedro' y la ejecución me responde :
Servidor: mensaje 207, nivel 16, estado 3, línea 1
El nombre de columna 'pedro' no es válido.
  #12 (permalink)  
Antiguo 14/07/2010, 15:22
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Respuesta: Usar Tabla en 1 Procedimiento Almacenado

Código SQL:
Ver original
  1. SET @qry1 = N'UPDATE ' + @nombre_tabla + ' SET MF_NOMBRE = ''' + QUOTENAME(@nombre_campo) + ''''
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #13 (permalink)  
Antiguo 14/07/2010, 19:01
 
Fecha de Ingreso: julio-2010
Mensajes: 11
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: Usar Tabla en 1 Procedimiento Almacenado

Gracias Flaviovich.
Era exactactamente el código que necesitaba y no lograba hacer funcionar
Tambien agradezco al foro por otorgar esta posibilidad única de recibir la cooperacion de los expertos.
Volveré con mas preguntas, en otra oportunidad.
No me critiquen si son muy elementales, ya que así se contribuye a darle vida a este espacio tan educativo.

Etiquetas: procedimiento, tablas, 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 16:30.