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

Parametros para alter table

Estas en el tema de Parametros para alter table en el foro de SQL Server en Foros del Web. Hola Agradeceria mucho que me ayudaran con un problema que me surgio realizando un procedimiento almacenado en SQL server 2005. Estoy intentando crear un SP ...
  #1 (permalink)  
Antiguo 15/10/2008, 10:34
 
Fecha de Ingreso: octubre-2008
Mensajes: 20
Antigüedad: 15 años, 6 meses
Puntos: 0
Pregunta Parametros para alter table

Hola

Agradeceria mucho que me ayudaran con un problema que me surgio realizando un procedimiento almacenado en SQL server 2005.
Estoy intentando crear un SP que modifique una tabla que tengo de Clientes, al SP no solo debo enviarle como parámetro el nombre del campo, tambien debo enviarle el tipo de dato (float, nvarchar, datetime...) y la longitud si asi se requiere (nvarchar (255)).

Se puede?

Mil gracias
  #2 (permalink)  
Antiguo 15/10/2008, 11:30
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: Parametros para alter table

Si pero con query dinamico y no es muy recomendable, por aquello de la inyeccion de codigo, te pongo un ejemplo

CREATE PROCEDURE usp_ConsultaTabla (@MyTabla sysname)
AS
BEGIN
SET NOCOUNT ON
DECLARE @SQLString NVARCHAR(100)
SET @SQLString = N'SELECT * FROM '+ @MyTabla
EXECUTE sp_executesql @SQLString
END

-- Pruebo el store
exec usp_ConsultaTabla 'cliente'
exec usp_ConsultaTabla 'producto'
  #3 (permalink)  
Antiguo 15/10/2008, 14:25
 
Fecha de Ingreso: octubre-2008
Mensajes: 20
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: Parametros para alter table

Hola
Agradezco tu amable colaboración.
Estuve intentando con el código que me enviaste, pero aun no logro insertar el nombre del campo, el tipo de campo y la longitud.
Adjunto el código que estoy utilizando.

ALTER PROCEDURE usp_ConsultaTabla (@MyTabla sysname)
AS
BEGIN
SET NOCOUNT ON
DECLARE @SQLString NVARCHAR(100),
@Nombre nvarchar(255),
@Tipo nvarchar(50),
@Longitud nvarchar(50)
SET @Nombre = N'Select nombre from tmp_Cliente '
SET @Tipo = N'Select TipoBD from tmp_Cliente '
SET @Longitud = N'Select Longitud from tmp_Cliente '
SET @SQLString = N'ALTER TABLE '+ @MyTabla + 'ADD '+ '@Nombre'+'@Tipo(@Longitud)'EXECUTE sp_executesql @Nombre,@Tipo,@Longitud,@SQLString
END

Que estoy haciendo mal?

Mil gracias

Jenifer
  #4 (permalink)  
Antiguo 15/10/2008, 15:21
Avatar de Andres95
Colaborador
 
Fecha de Ingreso: diciembre-2004
Mensajes: 1.802
Antigüedad: 19 años, 4 meses
Puntos: 38
Respuesta: Parametros para alter table

Si los datos estan en la temporal...

seria algo mas o menos asi..


Código:
ALTER PROCEDURE usp_ConsultaTabla (@MyTabla sysname)
AS
SET NOCOUNT ON
DECLARE  @SQLString NVARCHAR(100),@Nombre nvarchar(255),
         @Tipo nvarchar(50),@Longitud nvarchar(50)

Select @Nombre = nombre, @Tipo = TipoBD, @Longitud = Longitud  
from tmp_Cliente 

SET @SQLString = N'ALTER TABLE '+ @MyTabla + 'ADD '+ @Nombre + ' ' + @Tipo + ' (' + @Longitud + ') '

EXECUTE sp_executesql @Nombre,@Tipo,@Longitud,@SQLString
GO
Saludos a ambos!
__________________
La sencillez y naturalidad son el supremo y último fin de la cultura...
--
MCTS : SQL Server 2008, .NET Framework 3.5, ASP.NET Applications.
  #5 (permalink)  
Antiguo 16/10/2008, 07:56
 
Fecha de Ingreso: octubre-2008
Mensajes: 20
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: Parametros para alter table

Muchisimas gracias, por fin pude realizarlo.

Un abrazo.

Jenifer

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 17:31.