Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

DB2 - Store Procedure con Parametros en un Create View

Estas en el tema de DB2 - Store Procedure con Parametros en un Create View en el foro de Bases de Datos General en Foros del Web. Hola. Espero que alguién pueda ayudarme con el problema que tengo. Estoy experimentando un problema al querer crear un procedimiento almacenado en DB2 con parámetros ...
  #1 (permalink)  
Antiguo 09/10/2011, 11:03
 
Fecha de Ingreso: octubre-2011
Mensajes: 2
Antigüedad: 12 años, 6 meses
Puntos: 0
Pregunta DB2 - Store Procedure con Parametros en un Create View

Hola.

Espero que alguién pueda ayudarme con el problema que tengo.

Estoy experimentando un problema al querer crear un procedimiento almacenado en DB2 con parámetros SQL.

El procedimiento pretende crear una vista (CREATE VIEW) a partir de un SELECT que a su vez es formado por el JOIN de tres tablas. En las condiciones del SELECT debo incluir dos parámetros que son recibidos desde el llamado del procedimiento almacenado y que constituyen un rango de fechas (Fecha Inicial y Fecha Final).

He realizado pruebas de este Store Procedure con constantes de fecha y en ese caso funciona bien, sin embargo al sustituir las constantes de fecha por los parámetros, y al realizar el despliegue del procedimiento almacenado (Deployment) me da un error y nunca cataloga el procedimiento almacenado.

El error que da DB2 es el siguiente:


En ejecución
COBRANZA.SP_CREATEVIEWMOVIMIENTOSCLIENTES - Despliegue iniciado.
Crear procedimiento almacenado retornos SQLCODE: -206, SQLSTATE: 42703.
COBRANZA.SP_CREATEVIEWMOVIMIENTOSCLIENTES: 17: "FECHAINIMONITOREO" is not valid in the context where it is used.. SQLCODE=-206, SQLSTATE=42703, DRIVER=3.61.65
"FECHAINIMONITOREO" is not valid in the context where it is used.. SQLCODE=-206, SQLSTATE=42703, DRIVER=3.61.65
COBRANZA.SP_CREATEVIEWMOVIMIENTOSCLIENTES - Despliegue anómalo.
COBRANZA.SP_CREATEVIEWMOVIMIENTOSCLIENTES - Anulación completada satisfactoriamente.



Estoy trabajando con DB2 9.7 FixPack 2 en Windows 7 32-bit y el IBM Data Studio 2.2.


El fuente de mi procedimiento almacenado es el siguiente:


Código:
CREATE PROCEDURE SP_CreateViewMovimientosClientes  (IN FechaIniMonitoreo 	DATE ,
													IN FechaFinMonitoreo 	DATE )

SPECIFIC SP_CreateViewMovimientosClientes

P1: BEGIN
	-- ####################################################################################################
	-- # Crea la Vista de Valores de los Movimientos de los Clientes para la fecha y período monitoreado
	-- ####################################################################################################
		
		-- Elimina la Vista si ya existe
		If Exists (Select 1 From SYSIBM.SYSVIEWS Where Name = 'VIEWMOVIMIENTOSCLIENTES' and Creator = 'COBRANZA') 
			Then
	    		DROP VIEW COBRANZA.VIEWMOVIMIENTOSCLIENTES;
		End If;
		
		CREATE view COBRANZA.ViewMOVIMIENTOSCLIENTES (ClienteCod, PolizaCod, MonedaCod, RamoCod, TipoEndosoCod, EmisionEndosoNro, 
													  EmisionFecha, TipoMovimientoCod, MovPolizaNro) AS
			SELECT CLIENTES.ClienteCod, POLIZAS.PolizaCod, POLIZAS.MonedaCod, POLIZAS.RamoCod, MOVIMIENTOS.TipoEndosoCod, MOVIMIENTOS.EmisionEndosoNro, 
					MOVIMIENTOS.EmisionFecha, MOVIMIENTOS.TipoMovimientoCod, MOVIMIENTOS.MovPolizaNro	
			   FROM COBRANZA.CLIENTES AS CLIENTES JOIN COBRANZA.POLIZAS AS POLIZAS ON CLIENTES.ClienteCod = POLIZAS.ClienteCod 
							      JOIN COBRANZA.MOVIMIENTOSPOLIZAS AS MOVIMIENTOS ON MOVIMIENTOS.PolizaCod = POLIZAS.PolizaCod and 
														  							  MOVIMIENTOS.MonedaCod = POLIZAS.MonedaCod and 
			 											  							  MOVIMIENTOS.RamoCod = POLIZAS.RamoCod
			   WHERE MOVIMIENTOS.TipoMovimientoCod = 'PAG' and 
			   		 MOVIMIENTOS.MovPolizaFecha >= FechaIniMonitoreo and 
			   		 MOVIMIENTOS.MovPolizaFecha <= FechaFinMonitoreo ;
	
END P1
  #2 (permalink)  
Antiguo 11/10/2011, 11:51
 
Fecha de Ingreso: octubre-2011
Mensajes: 2
Antigüedad: 12 años, 6 meses
Puntos: 0
Respuesta: DB2 - Store Procedure con Parametros en un Create View

En el foro de data Studio de IBM alguien contestó sobre este tema:


Actualmente la sentencia CREATE VIEW no soporta parametros. Ud. puede referirse a la sección de la sentencia CREATE VIEW en los manuales de DB2 LUW 9.7 para mayor información. Aquí un extracto del manual de DB2:

"Defina la vista. En cualquier momento, la vista consiste de las filas que resultarían si la sentencia SELECT hubiera sido ejecutada. La selección no debe contener referencias a variables de host, parámetros ó tablas declaradas como temporales. Sin embargo, una vista parametrizada puede ser creada como una función de una tabla SQL."

Ruiming


Esto explica porque fallaron todas las diferentes opciones con las que hice pruebas.

Etiquetas: create, db2, procedimiento, view, almacenar
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:03.