SQL - Enviar como parametro el nombre de una tabla en un trigger

 
Vista:

Enviar como parametro el nombre de una tabla en un trigger

Publicado por cristian (3 intervenciones) el 30/01/2013 20:50:56
Buenas tardes, estoy creando un procedimiento para una inserción de datos en una tabla por día, este es parte del script que estoy llevando acabo....
lo que quiero es poder reemplazar el nombre de la tabla en el script por un avariable

SET @NTable = 'REPORTESPGZ0720130130'

EXEC SP_EXECUTESQL N'SELECT @RESULT = ID_PGZ FROM DHP_REPORTES.dbo.REPORTESPGZ0720130130 WHERE ID_PGZ = @ID_TABLA_PGZ', N'@RESULT VARCHAR(100) OUTPUT, @ID_TABLA_PGZ VARCHAR(100) OUTPUT', @RESULT OUTPUT, @ID_TABLA_PGZ OUTPUT

De antemano muchas gracias por su colaboración
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Isaias
Val: 2.542
Oro
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Enviar como parametro el nombre de una tabla en un trigger

Publicado por Isaias (1921 intervenciones) el 30/01/2013 22:37:18
No se que tenga que ver la ejecución del procedimiento SP_EXECUTESQL, con un trigger, pero bueno.

Revisa este link, ve los ejemplos de como se pasan parámetros y reciben resultados, si te queda alguna duda, vienes y nos comentas.

http://msdn.microsoft.com/en-us/library/ms175170(v=sql.105).aspx
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Enviar como parametro el nombre de una tabla en un trigger

Publicado por cristian (3 intervenciones) el 31/01/2013 00:36:18
Gracias por responder, mira el link ya lo había revisado pero no encuentro como reemplazar el nombre de la tabla por la variable en el script he intentado muchas formas de concatenarla pero no me da, te agradecería como se podría hacer, gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Enviar como parametro el nombre de una tabla en un trigger

Publicado por Libras (10 intervenciones) el 31/01/2013 16:26:43
usando tus datos:

SET @NTable = 'REPORTESPGZ0720130130'
set @query='SELECT @RESULT = ID_PGZ FROM DHP_REPORTES.dbo.' + @table + ' WHERE ID_PGZ = @ID_TABLA_PGZ', N'@RESULT VARCHAR(100) OUTPUT, @ID_TABLA_PGZ VARCHAR(100) OUTPUT', @RESULT OUTPUT, @ID_TABLA_PGZ OUTPUT'

EXEC SP_EXECUTESQL N@query

podria quedar de esta manera :)

saludos!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Enviar como parametro el nombre de una tabla en un trigger

Publicado por cristian (3 intervenciones) el 03/02/2013 18:02:30
Buenas, gracias por su colaboración, de la forma que ud me dice que púede ser funciona, pero el problema es como recuperar el valor que trae el Select, por ejemplo hay una sentencia que es:
IF EXISTS(....SENTENCIA SELECT....)
HAGA TAL COSA......

EL PROBLEMA ES COMO APLICAR ESTA SENTENCIA A UN QUERY? O DE LA SGNTE FORMA COMO UD DICE COMO RECUPERAR EL SELECT PARA PODER HACER UN IF?

USE DHP_REPORTES
Declare @query nvarchar(1000), @NTable nvarchar(50), @ID_TABLA_PGZ nvarchar(50)
SET @NTable = 'REPORTESPGZ0720130201'
SET @ID_TABLA_PGZ = '1454'

-- FORMA QUERY PERO NO SE PUEDE RECUPERAR EL RESULTADO DEL QUERY
set @query='SELECT TOP 1 ID_PGZ FROM DHP_REPORTES.dbo.'+@NTable+' WHERE ID_PGZ = '+@ID_TABLA_PGZ+''

EXEC SP_EXECUTESQL @query

-- FORMA QUERY QUE PERMITE RECUPERAR EL VALOR DEL SELECT PERO NO ME DEJA --UTILIZAR ESTE TIPO DE CONCATENACION PARA EL NOMBRE DE LA TABLA '+@NTabla+'
--EN ESTE TIPO DE EXEC SOLO SE PERMITE COLOCAR VARIABLES DE SALIDA PARA --OBTENER EL RESULTADO DE LA SENTENCIA (SELECT @RESULT = ID_PGZ) PERO EN EL --FROM NO PERMITE DE ESTA FORMA NI TAMPOCO ('+@NTable+' )

EXEC SP_EXECUTESQL N'SELECT @RESULT = ID_PGZ FROM DHP_REPORTES.dbo.REPORTESPGZ0720130130 WHERE ID_PGZ = @ID_TABLA_PGZ', N'@RESULT VARCHAR(100) OUTPUT, @ID_TABLA_PGZ VARCHAR(100) OUTPUT', @RESULT OUTPUT, @ID_TABLA_PGZ OUTPUT


LES AGRADECERIA QUE ME AYUDEN, LA VERDAD NO ENCUENTRO COMO REALIZAR ESTO, SALUDOS!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar