URGENTE sp con nombre de tabla dinámica

31/07/2006 - 23:57 por Francisco | Informe spam
Hola a todos
Tengo el siguiente procedimiento

ALTER PROC SP_VDAS_NO_ORDENES
@TIPO_TABLA AS VARCHAR(100) = '',
@FILTRO_1 AS VARCHAR(100) = ''
AS

SELECT
ITEM_NO,
SUM(QTY_ORDERED)
FROM @TIPO_TABLA + 'LIN_SQL'
GROUP BY
ITEM_NO
WHERE ITEM_NO = @FILTRO_1

Y este procedimiento no me sirve...

Tengo n tablas que comienzan con 5 caracteres y terminan con LIN_SQL.
Quiero pasarle por parámetros las 5 primeras letras, y después formar
dentro la tabla para hacerle una consulta.
Generé este codigo (el de arriba) pero me arroja error. ¿Como lo
puedo modificar para que el SP sea correcto?

Agadecido

Francisco Birrer

Preguntas similare

Leer las respuestas

#1 jcac
01/08/2006 - 00:14 | Informe spam
Puedes hacer esto

ALTER PROC SP_VDAS_NO_ORDENES
@TIPO_TABLA AS VARCHAR(100) = '',
@FILTRO_1 AS VARCHAR(100) = ''
AS
DECLARE @SENTENCIA VARCHAR(8000)
SET @SENTENCIA = 'SELECT ITEM_NO,
SUM(QTY_ORDERED)
FROM ' + @TIPO_TABLA + 'LIN_SQL GROUP BY
ITEM_NO
WHERE ITEM_NO = ' + @FILTRO_1 + ''
Execute( @SENTENCIA)

Espero no equivocarme con ningun apostrofe, a mi me funciono con esto:

ALTER PROCEDURE SP_VDAS_NO_ORDENES -- SP_VDAS_NO_ORDENES 'ALMACENES'
@TIPO_TABLA AS VARCHAR(100) = '',
@FILTRO_1 AS VARCHAR(100) = ''
AS
DECLARE @SENTENCIA VARCHAR(8000)
SET @SENTENCIA = 'SELECT * FROM ' + @TIPO_TABLA + ''
Execute( @SENTENCIA)

"Francisco" escribió en el mensaje
news:
Hola a todos
Tengo el siguiente procedimiento

ALTER PROC SP_VDAS_NO_ORDENES
@TIPO_TABLA AS VARCHAR(100) = '',
@FILTRO_1 AS VARCHAR(100) = ''
AS

SELECT
ITEM_NO,
SUM(QTY_ORDERED)
FROM @TIPO_TABLA + 'LIN_SQL'
GROUP BY
ITEM_NO
WHERE ITEM_NO = @FILTRO_1

Y este procedimiento no me sirve...

Tengo n tablas que comienzan con 5 caracteres y terminan con LIN_SQL.
Quiero pasarle por parámetros las 5 primeras letras, y después formar
dentro la tabla para hacerle una consulta.
Generé este codigo (el de arriba) pero me arroja error. ¿Como lo
puedo modificar para que el SP sea correcto?

Agadecido

Francisco Birrer
Respuesta Responder a este mensaje
#2 Salvador Ramos
01/08/2006 - 00:41 | Informe spam
Efectivamente, la solución a esos problemas es el uso de SQL dinámico.
Pero antes de aplicar esa solución creo que es conveniente conocer los
problemas que puede ocasionar, espero que este enlace te resulte
interesante:
http://www.hayes.ch/sql/sql_dinamico.html

Un saludo
Salvador Ramos
Murcia - España

[Microsoft MVP SQL Server]
www.helpdna.net (información sobre SQL Server y .NET)


"jcac" escribió en el mensaje
news:
Puedes hacer esto

ALTER PROC SP_VDAS_NO_ORDENES
@TIPO_TABLA AS VARCHAR(100) = '',
@FILTRO_1 AS VARCHAR(100) = ''
AS
DECLARE @SENTENCIA VARCHAR(8000)
SET @SENTENCIA = 'SELECT ITEM_NO,
SUM(QTY_ORDERED)
FROM ' + @TIPO_TABLA + 'LIN_SQL GROUP BY
ITEM_NO
WHERE ITEM_NO = ' + @FILTRO_1 + ''
Execute( @SENTENCIA)

Espero no equivocarme con ningun apostrofe, a mi me funciono con esto:

ALTER PROCEDURE SP_VDAS_NO_ORDENES -- SP_VDAS_NO_ORDENES 'ALMACENES'
@TIPO_TABLA AS VARCHAR(100) = '',
@FILTRO_1 AS VARCHAR(100) = ''
AS
DECLARE @SENTENCIA VARCHAR(8000)
SET @SENTENCIA = 'SELECT * FROM ' + @TIPO_TABLA + ''
Execute( @SENTENCIA)

"Francisco" escribió en el mensaje
news:
Hola a todos
Tengo el siguiente procedimiento

ALTER PROC SP_VDAS_NO_ORDENES
@TIPO_TABLA AS VARCHAR(100) = '',
@FILTRO_1 AS VARCHAR(100) = ''
AS

SELECT
ITEM_NO,
SUM(QTY_ORDERED)
FROM @TIPO_TABLA + 'LIN_SQL'
GROUP BY
ITEM_NO
WHERE ITEM_NO = @FILTRO_1

Y este procedimiento no me sirve...

Tengo n tablas que comienzan con 5 caracteres y terminan con LIN_SQL.
Quiero pasarle por parámetros las 5 primeras letras, y después formar
dentro la tabla para hacerle una consulta.
Generé este codigo (el de arriba) pero me arroja error. ¿Como lo
puedo modificar para que el SP sea correcto?

Agadecido

Francisco Birrer


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida