pasar parametro de varchar a instrucción sql - ¿es posible?

31/12/2003 - 10:53 por Raúl Martín | Informe spam
Lo que quisiera hacer si es posible es algo asi:

CREATE PROCEDURE [miprocedimiento]
@Tabla [nvarchar](15)
AS
DECLARE @DeSTRINGaLOQUESEA Tipo
set @DeSTRINGaLOQUESEA = CONVERT(ComoSea, @Tabla)

BEGIN
SELECT * FROM' @DeSTRINGaLOQUESEA
END

GO

en vez de:
CREATE PROCEDURE [miprocedimiento]
@Tabla [nvarchar](15)
AS
DECLARE @strSQL varchar(8000)

BEGIN
SET @strSQL ='SELECT * FROM '+ @Tabla
END

exec(@strSQL)
GO

es que si lo tengo que pasar todo a cadena va a ser un follón porque tendria
que cambiar todos mis procedimientos pues realmente no es un parametro que
tiene el nombre de una tabla sino que es parte del nombre de una tabla. O
sea seria algo asi como que el parametro tendria valores como 'francia',
'portugal', 'italia' y se concatenaria con el nombre parcial 'proveedores'
para llamar a la tabla franciaproveedores, portugalproveedores,
italiaproveedores. Se que no está normalizado pero al ser un sql-server
compartido y necesitar varias bases de datos, la unica opción barata y
"sencilla" de reprogramar mi aplicación y base de datos es duplicar las
tablas pues normalizar las tablas con un campo 'pais' seria mucho mas
trabajo.

Gracias de antemano
 

Leer las respuestas

#1 Maximiliano Damian Accotto
31/12/2003 - 13:42 | Informe spam
Raul,

Sql no admite ese tipo de parametros que vos estas pidiendo, por eso el uso
del Sqldinamico.

Por ahora no hay una solucion, no se en futuras versiones ;-).

Salu2

Maximiliano Damian Accotto


"Raúl Martín" escribió en el mensaje
news:
Lo que quisiera hacer si es posible es algo asi:

CREATE PROCEDURE [miprocedimiento]
@Tabla [nvarchar](15)
AS
DECLARE @DeSTRINGaLOQUESEA Tipo
set @DeSTRINGaLOQUESEA = CONVERT(ComoSea, @Tabla)

BEGIN
SELECT * FROM' @DeSTRINGaLOQUESEA
END

GO

en vez de:
CREATE PROCEDURE [miprocedimiento]
@Tabla [nvarchar](15)
AS
DECLARE @strSQL varchar(8000)

BEGIN
SET @strSQL ='SELECT * FROM '+ @Tabla
END

exec(@strSQL)
GO

es que si lo tengo que pasar todo a cadena va a ser un follón porque


tendria
que cambiar todos mis procedimientos pues realmente no es un parametro que
tiene el nombre de una tabla sino que es parte del nombre de una tabla. O
sea seria algo asi como que el parametro tendria valores como 'francia',
'portugal', 'italia' y se concatenaria con el nombre parcial 'proveedores'
para llamar a la tabla franciaproveedores, portugalproveedores,
italiaproveedores. Se que no está normalizado pero al ser un sql-server
compartido y necesitar varias bases de datos, la unica opción barata y
"sencilla" de reprogramar mi aplicación y base de datos es duplicar las
tablas pues normalizar las tablas con un campo 'pais' seria mucho mas
trabajo.

Gracias de antemano


Preguntas similares