2017-01-26 45 views
-1
一個Oracle功能

我想打電話給使用Java的甲骨文功能,我得到以下錯誤:錯誤從Java調用

java.sql.SQLException: ORA-06550: line 1, column 13: 
PLS-00306: wrong number or types of arguments in call to 'FUNCION' 
ORA-06550: line 1, column 13: 
PLS-00306: wrong number or types of arguments in call to 'FUNCION' 
ORA-06550: line 1, column 7: 
PL/SQL: Statement ignored 

這是我使用的調用該函數的方式:

String ejecucion = "{ ?=call function(?,?,?,?,?,?,?,?,?) }"; 

CallableStatement cons = c.ejecutarProcedimiento(ejecucion, 0); // Here I invoke "prepareCall" method 
double monto = 0; 

cons.registerOutParameter(1, java.sql.Types.FLOAT); 

// Parametro del procedimiento almacenado 
cons.setFloat(2, 2); 
cons.setDouble(3, importe); 
cons.setDate(4,TareasGenerales.convertirFecha(Parametros.cabezal.getFechaVencimientoPresentacion()));                     
cons.setDate(5,TareasGenerales.convertirFecha(Parametros.cabezal.getFechaVencmientoPago())); 
cons.setDate(6, TareasGenerales.convertirFecha(Parametros.fechaActual)); 
cons.setDate(7, TareasGenerales.convertirFecha(Parametros.fechaActual)); 
cons.setBoolean(8, false); 
cons.setInt(9, Integer.valueOf(Parametros.cabezal.getAnioMesDesde())); 
cons.setBoolean(10, false); 

cons.executeQuery(); 

當我執行最後一行時,出現錯誤。

我做錯了什麼?

在此先感謝。

更新:

declare 
-- Boolean parameters are translated from/to integers: 
-- 0/1/null <--> false/true/null 
    pa_a boolean := sys.diutil.int_to_bool(:a); 
    pa_b boolean := sys.diutil.int_to_bool(:b); 
begin 
    -- Call the function 
    :result := function(c=> :c, 
              d => :d, 
              e => :e, 
              f => :f, 
              g => :g, 
              h => :g, 
              i => i, 
              j => :j, 
              k => k); 
end; 

我加入甲骨文函數定義。

上傳2.0:

FUNCTION Prueba(tipo_calc   IN NUMBER, 
         impte   IN NUMBER, 
         f_venc   IN DATE, 
         f_venc_p   DATE, 
         f_pre   IN DATE, 
         f_pa   IN DATE, 
         pa_tiene IN BOOLEAN, 
         pa_anio   IN NUMBER, 
         pa_buen  IN BOOLEAN) RETURN NUMBER; 
+1

您還需要提供'function'的定義。 –

+3

論據#5發生了什麼?我看到1,2,3,4,6,7,8,9,10,但沒有5. – duffymo

+0

\t啓用結果\t \t浮法啓用 一個\t \t浮法啓用 \t b浮法\t 啓用\t C日期\t 啓用\t d日期\t 啓用\t f日期\t 啓用\t剋日期\t 啓用\tħ整數\t 啓用\t我浮法\t 已啓用\t j Integer –

回答

1

該錯誤信息是明確的:

PLS-00306:錯號碼或類型的呼叫 'FUNCION'

檢查參數多少PARAMS有函數在數據庫中。

+0

我做過了,但它仍然不起作用。你可以檢查我們在之前的評論中使用了多少個參數。 –

0

最後我解決了這個問題,直接在字符串「ejecucion」中傳遞我的參數,而不是在之後添加它們。