En principio no hay problema para usar "variable" en una consulta, es lo mismo que sea contra una vista que contra una tabla... Ahora bien el uso de variables cambia dependiendo del gestor de BD que uses, necesito que seas un poco más específico para saber desde donde ejecutas la query... pues no es lo mismo que uses la linea de comandos que que uses una herramienta de desarrollo (tipo Visual Basic o Delphi). Suerte
Utilizo Oracle 7.3, entonces al usar las variables,como es el caso,para intentar crear una vista, me da error...porque parece ser que la vista no admite variables, igual que la orden create table....as select....; tampoco me permite usar hay una variable, que por ejemplo contenga :F_MES:='20020530'; (Eso si las variables son previamente declaradas) Gracias por la respuesta anterior
Yo también uso Oracle, pero no se para que necesitas una variable en una sentencia de creación de una vista... pero si tu la necesitas.. adelante. Mandame el Create que te da problemas y miraré alguna alternativa... en principio se me ocurre, que igual en lugar de crear una vista con variables igual te sería mejor crear una función a la cual si le puedes pasar valores y, luego esa función puedes incluirla en tu sentencias SQL sin problemas..
La variable que contiene la fecha :F_ANT es la que me da problemas alter session set nls_date_format = 'yyyymmdd'; VARIABLE F_ANT CHAR(8); EXECUTE :F_ANT:='20020530'; CREATE VIEW NU_PRESTAMOS_MES_ANTERIOR1 AS Select N1.OFI_TITULAR,N1.SERV_CONTRATO, N1.OFI_CONTRATO, N1.NUM_CONTRATO, N1.DIG_CONTRATO, N1.FEC_ALTA, N1.FEC_VENC, N1.NUM_TIT, N1.COD_PROD, N1.OFI_TITULAR, N1.VOL_CONCEDIDO, N1.SALDO_PDTE_FIN_MES, N1.TIPO_COBRADO, N1.SALDO_NORMAL_FIN_MES, N1.SALDO_VENCIDO_FIN_MES, N1.SALDO_CLASIFICADO, N1.VOL_MENS_FALLIDOS, N1.FINALIDAD_CREDITO, N1.GARANTIA_INTERNA_CCM, N1.GARANTIA, N1.FECHA_DATO_ID, N1.FEC_PRIMER_IMPAGO, to_number(to_char(to_date(:F_ANT,'yyyymmdd')-to_date(fec_primer_impago,'yyyymmdd'))), N1.SECTOR, N1.CLASE_INTERES, N1.SITUACION_ID, N1.SUBGRUPO_ID, N1.CUENTA, N2.TAE, N2.DIFERENCIAL,N3.COD_TRAMOS,N3.DESC_INTERVALO, N2.CODTIPRE,N4.COD_TRAMOS,N4.DESC_INTERVALO,N1.VMOR, N5.INTERVALO,N5.DESC_INTERVALO,N1.VMDE,' ',' ',N1.DOTACION From CINFO.NU_PRESTAMOS N1, CINFO.NU_CONDICIONES_PRESTAMOS N2, CINFO.NU_TRAMOS_DIFERENCIAL N3,CINFO.NU_TRAMOS_TIPO_INTERES N4, CINFO.CLAVE_TRAMOS_PASIVO N5 Where (N1.OFI_CONTRATO=N2.OFIAPE) and (N1.NUM_CONTRATO=N2.NUMECTA) and (N1.DIG_CONTRATO=N2.DIGICTA) and (N1.SERV_CONTRATO=N2.CODISER) and (N1.FECHA_DATO_ID=N2.FECHA_DATO_ID) and (N2.FECHA_DATO_ID=:F_ANT) and N3.TRAMADO='01' and N2.DIFERENCIAL between N3.VALOR_INFERIOR and N3.VALOR_SUPERIOR and N4.TRAMADO='01' and N1.TIPO_COBRADO between N4.VALOR_INFERIOR and N4.VALOR_SUPERIOR and N1.SERV_CONTRATO=N2.CODISER and N5.TRAMADO='07' and N1.SALDO_PDTE_FIN_MES between N5.LIMITE_INFERIOR and N5.LIMITE_SUPERIOR; commit;
Necesito saber dos cosas mas_ 1. Desde donde lo ejecutas, es decir, si usas un Plsql o una linea de comandos o ... bueno, lo que sea 2. Cual es el mensaje de error que te da.