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

Procedure Que Crea Tabla

Estas en el tema de Procedure Que Crea Tabla en el foro de SQL Server en Foros del Web. Sres. como estan espero que bien..... tengo un procedure que crea tabla recibo parametros de el nombre de la tabla y del campo pero ademas ...
  #1 (permalink)  
Antiguo 26/02/2008, 12:09
Avatar de jahman  
Fecha de Ingreso: noviembre-2003
Ubicación: Oslo
Mensajes: 230
Antigüedad: 21 años
Puntos: 0
Exclamación Procedure Que Crea Tabla

Sres. como estan espero que bien.....

tengo un procedure que crea tabla recibo parametros de el nombre de la tabla y del campo pero ademas deseo recibir en parametros el tipo del campo, no lo e podido hacer, trate de agregar el @TipoCampo1 tal cual como lo hize con el @campo1 pero tiraba error al momento de ejecutar....espero sus comentarios

Código:
alter PROCEDURE CreaTabla   (@tableName varchar(50),@Campo1 varchar(50))
AS 
BEGIN 
   
    Exec('CREATE TABLE '+@tableName+' (Id INT NOT null IDENTITY(1,1),'+@Campo1 +' int)')
 
END

CreaTabla Tabla1,IdtDatosm
  #2 (permalink)  
Antiguo 26/02/2008, 12:42
Avatar de Andres95
Colaborador
 
Fecha de Ingreso: diciembre-2004
Mensajes: 1.802
Antigüedad: 19 años, 11 meses
Puntos: 38
Re: Procedure Que Crea Tabla

que error te muestra?

te comento que ejecute sin error el codigo que posteaste...

Saludos!
__________________
La sencillez y naturalidad son el supremo y último fin de la cultura...
--
MCTS : SQL Server 2008, .NET Framework 3.5, ASP.NET Applications.
  #3 (permalink)  
Antiguo 26/02/2008, 13:39
Avatar de jahman  
Fecha de Ingreso: noviembre-2003
Ubicación: Oslo
Mensajes: 230
Antigüedad: 21 años
Puntos: 0
Re: Procedure Que Crea Tabla

claro si ese es el que no tiene problemas...

si te das cuenta en
Código:
'+@Campo1 +' int
aparece el tipo de campo predeterminado pero lo que quiero es que no sea predeterminado si no que el usuario ingrese el tipo de datos a travez de un select que estara en un pagina

por eso a mi se me ocurrio hacer algo asi
Código:
'+@Campo1 +' '+@TipoCampo1+'
la cosa es que en el SQL Query Analizer aparece error cuando llamo al procedure

CreaTabla NombreTabla,Campo1,int

ya que toma el parametro int como propio ahora no e probado esa forma desde una pagina pero creo que me tiraria el mismo error.
  #4 (permalink)  
Antiguo 26/02/2008, 14:53
Avatar de Rinnegan  
Fecha de Ingreso: febrero-2008
Mensajes: 11
Antigüedad: 16 años, 9 meses
Puntos: 0
Re: Procedure Que Crea Tabla

Creo que el error te lo tira porque tu estas tratando de concatenar un string,
y los tipos de los campos son palabras reservadas.

Por lo que el SLQ no te las detecta como tal.
  #5 (permalink)  
Antiguo 26/02/2008, 15:48
 
Fecha de Ingreso: enero-2008
Mensajes: 9
Antigüedad: 16 años, 10 meses
Puntos: 0
Re: Procedure Que Crea Tabla

Solo tienes que pasarle los parametro como strings, con las comillas


ALTER PROCEDURE CreaTabla (@tableName varchar(50),@Campo1 varchar(50),@TipoCampo1 varchar(50))
AS
BEGIN
EXEC('CREATE TABLE '+@tableName+' (Id INT NOT null IDENTITY(1,1),'+@Campo1 +' '+@TipoCampo1+')')
END

CreaTabla 'Tabla1','IdtDatosm', 'varchar'
  #6 (permalink)  
Antiguo 27/02/2008, 17:08
Avatar de Andres95
Colaborador
 
Fecha de Ingreso: diciembre-2004
Mensajes: 1.802
Antigüedad: 19 años, 11 meses
Puntos: 38
Re: Procedure Que Crea Tabla

Es correcto, todas la cadenas (strings) deben de ir entre comilla simple...

Saludos!
__________________
La sencillez y naturalidad son el supremo y último fin de la cultura...
--
MCTS : SQL Server 2008, .NET Framework 3.5, ASP.NET Applications.
  #7 (permalink)  
Antiguo 28/02/2008, 07:48
Avatar de jahman  
Fecha de Ingreso: noviembre-2003
Ubicación: Oslo
Mensajes: 230
Antigüedad: 21 años
Puntos: 0
Re: Procedure Que Crea Tabla

Bueno Gracias por las repsuesta, pero ya me habia dado cuenta antes asi que al final lo hze asi

Hize dos Procedure. los cuales el primero Crea el la tabla con algunos campos que son comunes en las tablas, el segundo procedure es para poder agregar los campos que el usuario estime conveniente y ademas de eso los guardo en otra tabla donde tengo los campos de las distintas tomas de datos, de esta forma obtengo un manteneor o creador de tomas de datos.

Código:
alter PROCEDURE CreaTabla   (@tableName varchar(50))
AS 
BEGIN 
   
    Exec('CREATE TABLE '+@tableName+' (Id INT NOT null IDENTITY(1,1),Fecha datetime,IdTDatos int,IdUser int,Ipla int,NombreUser varchar(50))')
 
END
go,
alter PROCEDURE IngresaCampos  (@tableName varchar(50),@Campo varchar(50),@TipoCampo varchar(50))
AS 
BEGIN 
   
    Exec('ALTER TABLE '+@tableName+' ADD '+ @Campo +' '+ @TipoCampo +'')
 
END
  #8 (permalink)  
Antiguo 28/02/2008, 07:49
Avatar de jahman  
Fecha de Ingreso: noviembre-2003
Ubicación: Oslo
Mensajes: 230
Antigüedad: 21 años
Puntos: 0
Re: Procedure Que Crea Tabla

Ahora otra consulta como puedo saber a travez de asp que tipo de campo es una determinada columna????
  #9 (permalink)  
Antiguo 28/02/2008, 09:51
Avatar de Andres95
Colaborador
 
Fecha de Ingreso: diciembre-2004
Mensajes: 1.802
Antigüedad: 19 años, 11 meses
Puntos: 38
Re: Procedure Que Crea Tabla

Código:
select * from information_schema.columns
Saludos!
__________________
La sencillez y naturalidad son el supremo y último fin de la cultura...
--
MCTS : SQL Server 2008, .NET Framework 3.5, ASP.NET Applications.
  #10 (permalink)  
Antiguo 28/02/2008, 09:54
Avatar de jahman  
Fecha de Ingreso: noviembre-2003
Ubicación: Oslo
Mensajes: 230
Antigüedad: 21 años
Puntos: 0
Sonrisa Re: Procedure Que Crea Tabla

Gracias......
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 22:29.