FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Crear Vista de forma dinamica
Hola.
Necesito crear una vista de una tabla, de forma dinamica (la tabla de la que voy a crear la vista no es siempre la misma). En función de este nombre asigno tambien el nombre a la vista. He conseguido crear la vista de la siguiente forma: ALTER PROCEDURE [dbo].[VISTACrear] @INTABLA VARCHAR(30) AS BEGIN DECLARE @VISTA VARCHAR(31) SET @VISTA = 'V' + @INTABLA EXEC ('CREATE VIEW ' + @VISTA + ' AS SELECT REGIS01, REGIS02, REGIS03, REGIS04, REGIS05, REGIS06, REGIS07, REGIS08, REGIS09, REGIS10, REGIS12, REGIS11, REGIS13, REGIS14, REGIS15, REGIS18, REGIS19, REGIS20 FROM ' + @INTABLA) END El problema viene cuando quiero introducir las condiciones del "SELECT" para crear la vista. ALTER PROCEDURE [dbo].[VISTACrear] @INTABLA VARCHAR(30), @INARTI VARCHAR(13), @INSITU VARCHAR(15), @INICIO DATETIME, @FIN DATETIME, @INPROVEDO VARCHAR(5), @COMBO VARCHAR(1), @RADIO VARCHAR(1), @INPROBLE BIT, @OUTVISTA VARCHAR(31) OUTPUT, @OUTERROR INT OUTPUT AS BEGIN DECLARE @VISTA VARCHAR(31) BEGIN TRAN SET @VISTA = 'V' + @INTABLA EXEC ('CREATE VIEW ' + @VISTA + ' AS SELECT REGIS01, REGIS02, REGIS03, REGIS04, REGIS05, REGIS06, REGIS07, REGIS08, REGIS09, REGIS10, REGIS12, REGIS11, REGIS13, REGIS14, REGIS15, REGIS18, REGIS19, REGIS20 FROM ' + @INTABLA + ' WHERE REGIS03='+@INARTI+' AND REGIS06='+@INSITU+ ' AND REGIS09 BETWEEN '+@INICIO+' AND '+@FIN+ ' AND REGIS25=TRUE AND REGIS15='+@INPROVEDO+' ORDER BY REGIS01') No me toma las variables a partir de la variable "@INARTI" . El valor que le paso a @INARTI='A.20100' y solo me toma la 'A'. Tengo que mencionar que tambien he probado utilizando 'CAST' para forzar la conversión aunque fuera un varchar. Con las variables @INICIO y @FIN me pasa lo mismo por ser de tipo DATETIME (tambien he probado con el CAST). Otra forma que tambien he probado es haciendolo de una forma mas segura utilizando: SELECT sSQL = 'SELECT * FROM ' SELECT @sSQL = @SQL + @NombreTabla --Y ejecutar ese texto contenido en nuestra variable EXEC ( @sSQL) y su forma mas segura: DECLARE @sSQL nvarchar(1000) --la variabla que contiene la cadena a ejecutar debe ser unicode, por eso lo de nvarchar SET @sSQL = 'SELECT * FROM Products WHERE ProductName = @NombreProducto' EXEC sp_executesql @sSQL, N'@NombreProducto nvarchar(50)', @NombreProducto =@parametroPasadoAProcedimiento pero tampoco me deja. Ya no se que mas formas probar. Alguien sabe otra forma o que estoy haciendo mal???? Gracias de todos modos. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Crear formularios de forma dinamica | istradlin | Lazarus, FreePascal, Kylix, etc. | 4 | 06-12-2007 15:30:40 |
crear componentes de forma dinamica | gustavoh | .NET | 2 | 24-08-2006 16:31:08 |
Crear variables de forma dinamica | papulo | PHP | 3 | 24-11-2005 17:39:20 |
Crear BD de forma dinamica en Access | Coco_jac | Varios | 2 | 02-06-2005 19:47:00 |
Crear Forms en forma DINAMICA | Phacko | Varios | 4 | 11-09-2004 00:02:18 |
|