Oracle - Problemas en reporte update un campo en una tabla

 
Vista:

Problemas en reporte update un campo en una tabla

Publicado por Alvaro Meoño Wong (3 intervenciones) el 26/02/2016 00:28:22
El reporte me funciona correctamente, solo que al adicionar una formula columna me da error donde estoy realizando el update.
Estoy utilizando Oracle 6i de Reports

1
2
3
4
5
6
7
8
9
10
function M_PRECIOFormula return Number is
begin
  	srw.do_sql(
    	'UPDATE CONCMARTIC
  		SET M_PRECIO = Q_2.PRECIO_UNI
  		WHERE C_ART_UNI = Q_2.C_ART_UNI');
  		commit;
  		RETURN NULL;
  		COMMIT;
end;

He buscado en internet pero me ha sido imposible encontrar la informacion.

El primer SQL es Q_1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
SELECT o.N_COMPA, o.N_ORDEN,
CIA.NOM_COMPA, o.C_Prove, P.nom_Prove, o.t_compra, o.M_DESCUENTO, o.IMP_CONSU,o.IMP_VENTA,
decode(o.Prioridad,1,'URGENTE',
                              2,'N      ',
                              3,'R      ') Priori,
P.Contacto,p.n_telefono,p.N_Fax,
o.F_Orden, o.F_Entrega, o.c_pago, t.des_termpag,
substr(o.observacion,1,64),
substr(o.observacion,65,64),
substr(o.observacion,128,64), --substr(o.observacion,192,64),
substr(o.solicitudes,1,20),o.Ind_Paga,
TOT_COLONES,
MTO_DESC, MTO_CONSUMO, MTO_VENTAS,
TOT_COLONES-MTO_DESC+MTO_CONSUMO+MTO_VENTAS  TOTAL_GENERAL,
(TOT_COLONES/M_CAMBIO) TOT_DOLARES,
(MTO_DESC/M_CAMBIO)    MDESC_DOL,
(MTO_CONSUMO/M_CAMBIO) MCONS_DOL,
(MTO_VENTAS/M_CAMBIO)  MVTAS_DOL,
decode(substr(o.observacion,2,1),'$',
(TOT_COLONES/1)-(MTO_DESC/1)+(MTO_CONSUMO/1)+(MTO_VENTAS/1),
(TOT_COLONES/M_CAMBIO)-(MTO_DESC/M_CAMBIO)+(MTO_CONSUMO/M_CAMBIO)+(MTO_VENTAS/M_CAMBIO))  TOT_GEN_DOL,
M_CAMBIO,
Decode(O.CargarA,'20', 'VER REQ. ADJUNTA', Null,'                     ', O.CargarA) CargarA,
decode(substr(O.c_depart,1,1),'C','COTO',
                                                 'Q','QUEPOS',
                                                 O.C_DEPART) depto,
 O.solicitado,
 O.n_bodega, decode(O.n_compa, 'NUM','BOD: '||B.Nom_Bode,
                                                        'UNI','BOD: '||B.Nom_Bode,
                                                        'EDN','BOD: EDIFICIO NUMAR') NOM_BODE,
 O.c_compra, c.nom_compra, O.C_Depart,
 O.copia, o.stock,
decode(substr(o.observacion,2,1),'$','DOLARES','COLONES') INDICA,O.E_ORDENC
 FROM CONCORDENC O, conccompra c,
 sirh.rhncbodega b, sirh.rhnccompan CIA,
 concproved P, concterpag T
 WHERE o.N_COMPA = upper(:Cia) AND
-- O.C_COMPRA = UPPER(USER) AND
   LTRIM(RTRIM(O.N_ORDEN)) >= LTRIM(RTRIM(:V_ORDEN1)) AND
   LTRIM(RTRIM(O.N_ORDEN)) <= LTRIM(RTRIM(:V_ORDEN2)) AND
--  O.E_OrdenC not in ('G','S','N') and
      O.T_Compra =  :V_COMPRA      And
      o.N_compa = b.n_compa and
      o.n_compa = CIA.n_compa and
--    o.E_ordenc = 'A' and
--      o.T.Compra = 'L' and
      o.c_prove = p.c_prove and
      o.c_pago  = t.c_pago and
      O.c_compra = c.c_compra and
      O.n_bodega = b.n_bode


El segundo SQL es Q_2

1
2
3
4
5
6
7
8
9
10
11
12
13
14
SELECT D.N_COMPA, D.N_ORDEN,  D.CANT_ART,  A.UNI_MED,
D.C_ARTIC,ROWNUM  CONTADOR,
RTrim(LTrim(A.DES_LARGART))||' '||RTrim(LTrim(D.Des_ArtComp))||' '
||Rtrim(LTrim(A.N_Parte1))||' '||Rtrim(LTrim(A.N_Parte2)) Articulo,
D.PRECIO_UNI,
Round(Round(D.PRECIO_UNI*D.CANT_ART*0.2,2)*5,2) M_DETALLE, INCREMENTO,
--Round(Round((D.PRECIO_UNI*D.CANT_ART)/:M_CAMBIO*0.2,2)*5,2) M_DETALLE_D
((D.PRECIO_UNI*D.CANT_ART)/:M_CAMBIO) M_DETALLE_D
--Round(Round(:M_DETALLE/:M_CAMBIO)) M_DETALLE_D
FROM CONCDETORD D, CONCMARTIC A
 WHERE D.N_COMPA = :N_COMPA AND
  D.N_ORDEN = :N_ORDEN AND
  D.C_ART_UNI = A.C_ART_UNI AND
  D.E_DETORD = 'A'

se adiciona en Q_2 la funcion indicada anteriormente.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder