Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > MS SQL Server
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 13-02-2008
felixhb felixhb is offline
Registrado
 
Registrado: feb 2008
Posts: 1
Poder: 0
felixhb Va por buen camino
Exclamation 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.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Crear formularios de forma dinamica istradlin Lazarus, FreePascal, Kylix, etc. 4 06-12-2007 16:30:40
crear componentes de forma dinamica gustavoh .NET 2 24-08-2006 17:31:08
Crear variables de forma dinamica papulo PHP 3 24-11-2005 18:39:20
Crear BD de forma dinamica en Access Coco_jac Varios 2 02-06-2005 20:47:00
Crear Forms en forma DINAMICA Phacko Varios 4 11-09-2004 01:02:18


La franja horaria es GMT +2. Ahora son las 02:53:42.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi