uhm provo a rispiegarmi.

per fare un esempio, questa la query da dove prendo C o K:
codice:
SELECT
SUBSTR(CODINT, 0, 1)
FROM MAT_ANAG
WHERE
DITMAT = 'XXL'
AND FVL = ' '
AND NPAM = '0087';
dove CODINT può cominciare solo con C o K.
e NPAM lo prendo da MOV.NPAM.

in sostanza:
codice:
UPDATE  
MOV_MAG_DETT MOV  
SET  
MOV.PREZZO = FN_FSH_TROVA_PREZZO(MOV.DITTA, MOV.NPAM, 'OF', '1616', ?, '01', MOV.DATDOC), 
MOV.PRZDIVISA = FN_FSH_TROVA_PREZZO(MOV.DITTA, MOV.NPAM, 'OF', '1616', ?, '01', MOV.DATDOC), 
MOV.IMPORTO = MOV.QUANTI * FN_FSH_TROVA_PREZZO(MOV.DITTA, MOV.NPAM, 'OF', '1616', ?, '01', MOV.DATDOC), 
MOV.IMPDIVISA = MOV.QUANTI * FN_FSH_TROVA_PREZZO(MOV.DITTA, MOV.NPAM, 'OF', '1616', ?, '01', MOV.DATDOC), 
MOV.SCONTO1 = ( 
    se SELECT SUBSTR(CODINT, 0, 1) FROM MAT_ANAG WHERE DITMAT = 'XXL' AND FVL = ' ' AND MOV.NPAM = '0087' ==> C allora sconto 20, 
    se SELECT SUBSTR(CODINT, 0, 1) FROM MAT_ANAG WHERE DITMAT = 'XXL' AND FVL = ' ' AND MOV.NPAM = '0087' ==> K allora sconto 30, 
), 
MOV.TSTP_MOD = SYSDATE, 
MOV.OPR = 'SQL'  
WHERE  
MOV.DITTA = 'XXL'  
AND MOV.FVL = ' '  
AND MOV.NUMERAT = ?  
AND MOV.PERIODO = ?  
AND MOV.NUM = ?  
AND MOV.SERIE = '01'