Hola a todos,
siguiendo con el tema del procedimiento,
tengo este script sql para crear una serie de tablas y un procedimiento que
devuelve el resultado de una select, y dicho resultset lo inserto en una
tabla temporal.
Sin embargo, al hacer la select sobre la tabla temporal, no obtengo registros.
Alguien puede orientarme sobre ello ? Gracias.
Aquí dejo el script que voy ejecutando en el Analizado de Consultas.
create table TABLA_MAESTRA (
CD_NOMBRE_TABLA VARCHAR(100) NOT NULL
, DS_CAMPO_DESCRIPCION VARCHAR(100) NOT NULL
, DS_CAMPO_CIF VARCHAR(100) NULL
)
go
CREATE TABLE tabla1(
ID INT NOT NULL,
Descripcion VARCHAR(20) NOT NULL,
CIF VARCHAR(8) NULL
)
GO
CREATE TABLE tabla2(
ID INT NOT NULL,
Descripcion2 VARCHAR(20) NOT NULL
)
GO
INSERT INTO [testdb].[dbo].[TABLA_MAESTRA]
([CD_NOMBRE_TABLA],[DS_CAMPO_DESCRIPCION],[DS_CAMPO_CIF])
VALUES
('tabla1', 'Descripcion', 'CIF')
INSERT INTO [testdb].[dbo].[TABLA_MAESTRA]
([CD_NOMBRE_TABLA],[DS_CAMPO_DESCRIPCION],[DS_CAMPO_CIF])
VALUES
('tabla2', 'Descripcion2', null)
GO
INSERT INTO tabla1 (ID, Descripcion, CIF) VALUES (1, 'des1 a', '12345678');
INSERT INTO tabla1 (ID, Descripcion, CIF) VALUES (2, 'des1 b', '20939483');
INSERT INTO [tabla2] ([ID],[Descripcion2]) VALUES ( 1, 'des2 a' )
INSERT INTO [tabla2] ([ID],[Descripcion2]) VALUES ( 2, 'des2 b' )
INSERT INTO [tabla2] ([ID],[Descripcion2]) VALUES ( 3, 'des2 c' )
GO
DROP PROCEDURE ObtenerTablaPorNombre
GO
CREATE PROCEDURE ObtenerTablaPorNombre
@ParamNombreTabla VARCHAR(100)
AS
DECLARE @cmd nvarchar(max)
DECLARE @params nvarchar(max)
DECLARE @NombreTabla VARCHAR(MAX)
DECLARE @Descripcion VARCHAR(MAX)
DECLARE @CIF VARCHAR(MAX)
PRINT 'Select en tabla maestra'
SELECT @NombreTabla = [CD_NOMBRE_TABLA], @Descripcion =
[DS_CAMPO_DESCRIPCION] , @CIF = [DS_CAMPO_CIF]
FROM [TABLA_MAESTRA] WHERE [CD_NOMBRE_TABLA] = @ParamNombreTabla
PRINT 'Select en tabla ' + @NombreTabla
SET @cmd = 'SELECT ' + @Descripcion + ',' + @CIF + ' FROM ' + @NombreTabla
SET @params = '@pDescripcion varchar, @pCIF varchar, @pNombreTabla varchar '
EXEC sp_executesql @cmd, @params, @pDescripcion = @Descripcion, @pCIF =
@CIF, @pNombreTabla = @NombreTabla
GO
EXEC [ObtenerTablaPorNombre]
@ParamNombreTabla = 'tabla2'
GO
DROP TABLE [#tablaTemp]
Create table #tablaTemp(Descripcion VARCHAR(20), CIF VARCHAR(8) )
Insert into #tablaTemp EXEC [ObtenerTablaPorNombre]
@ParamNombreTabla = 'tabla2'
GO
SELECT * FROM [#tablaTemp]
Saludos y muchas gracias de antemano.
http://www.alhambra-eidos.es/web2005/index.html
www.kiquenet.net
http://www.setbb.com/putainformatic...opic.php?p3
www.trabajobasura.com/solusoft
Leer las respuestas