Tablas dinamicas en SQL

16/04/2004 - 12:17 por take2k3 | Informe spam
Hola a todos,
Mi problema es el siguiente:

Tengo una estructura de una bdd fija, con tres tablas (productos,
proveedores, categorias) y cada una de ellas con unas columnas fijas
generales, id_pro, nom_prod, id_prov, nom_prov, etc, ..., lo que
quiero hacer es crear mas columnas desde una aplicacion .NET, desde un
WebForm el usuario tiene que introducir un nombre de tabla y otro de
columna para crear en dicha tabla una columna nueva.
Lo he intentado hacer usando un procedimiento almacenado (uso
SQLServer2000) que le pase por parametros el nombre de la tabla y el
nombre de la nueva columna, utilizando:

CREATE PROCEDURE Crear_Campo @nom_tabla varchar(15), @nom_columna
varchar(15) AS
ALTER TABLE @nom_tabla ADD @nom_columna varchar(15) NULL

pero no me funciona, el problema creo que es que no se pueden utilizar
parametros de entrada en instrucciones como ALTER TABLE.

Otra cosa que he intentado hacer es usando trigers, mediante una tabla
intermedia (tbUpdate) con los campos (nom_tabla, nom_columna) y que
cada vez que se inserte un registro en esa tabla que salte un trigger
que cree la nueva columna en la tabla especificada usando los valores
de la tabla tbUpdate.

Es posible hacer esto? o si alguien tiene alguna idea diferente le
agradeceria infinito que me la dijera, no tengo mucha idea en
SQLServer2000 por eso estoy teniendo bastantes problemas.

GRACIAS por adelantado.
 

Leer las respuestas

#1 manel gonzalez
16/04/2004 - 12:31 | Informe spam
No creo que se pueda ejecutar una sentencia con parámetros que definan la
tabla

Prueba con EXEC(). Tienes mas información en los BOL. Mira este
procedimiento

CREATE PROCEDURE Crear_Campo @nom_tabla varchar(15), @nom_columna
varchar(15) AS
DECLARE @SQL AS VARCHAR(200)

SET @SQL = 'ALTER TABLE ' + @nom_tabla + ' ADD ' + @nom_columna + '
VARCHAR(15) NULL'
EXEC(@SQL)


"Takashi" escribió en el mensaje
news:
Hola a todos,
Mi problema es el siguiente:

Tengo una estructura de una bdd fija, con tres tablas (productos,
proveedores, categorias) y cada una de ellas con unas columnas fijas
generales, id_pro, nom_prod, id_prov, nom_prov, etc, ..., lo que
quiero hacer es crear mas columnas desde una aplicacion .NET, desde un
WebForm el usuario tiene que introducir un nombre de tabla y otro de
columna para crear en dicha tabla una columna nueva.
Lo he intentado hacer usando un procedimiento almacenado (uso
SQLServer2000) que le pase por parametros el nombre de la tabla y el
nombre de la nueva columna, utilizando:

CREATE PROCEDURE Crear_Campo @nom_tabla varchar(15), @nom_columna
varchar(15) AS
ALTER TABLE @nom_tabla ADD @nom_columna varchar(15) NULL

pero no me funciona, el problema creo que es que no se pueden utilizar
parametros de entrada en instrucciones como ALTER TABLE.

Otra cosa que he intentado hacer es usando trigers, mediante una tabla
intermedia (tbUpdate) con los campos (nom_tabla, nom_columna) y que
cada vez que se inserte un registro en esa tabla que salte un trigger
que cree la nueva columna en la tabla especificada usando los valores
de la tabla tbUpdate.

Es posible hacer esto? o si alguien tiene alguna idea diferente le
agradeceria infinito que me la dijera, no tengo mucha idea en
SQLServer2000 por eso estoy teniendo bastantes problemas.

GRACIAS por adelantado.

Preguntas similares