如何在java中调用没有参数的PL / SQL函数

时间:2016-05-24 08:11:24

标签: java plsql

我有一个函数,它返回VARCHAR,但启动时没有参数,它看起来像这样:

create or replace 
FUNCTION stosunek_platnosci RETURN VARCHAR
IS
liczba_oplaconych NUMBER;
liczba_nieoplaconych NUMBER;
komentarz Varchar(135);
oplacone Varchar(1) := 'T';
begin
 Select count(*) into liczba_oplaconych from rezerwacje where platnosc_dokonana = oplacone; 
 Select count(*) into liczba_nieoplaconych from rezerwacje where platnosc_dokonana != oplacone; 
 if liczba_oplaconych > liczba_nieoplaconych then           
    komentarz:= 'Obecnie klienci w większości opłacili swoje rezerwacje.';
 elsif liczba_oplaconych < liczba_nieoplaconych then            
    komentarz:= 'Obecnie klienci w większości nie opłacili swoich rezerwacji.';
 else
    komentarz:= 'W bazie jest tyle samo opłaconych i nieopłaconych rezerwacji.';
 end if;
RETURN komentarz;
end;

并将其称为:

try {
        callStmt = connection.prepareCall("{stosunek_platnosci();}");
        callStmt.registerOutParameter(1, java.sql.Types.VARCHAR);
        callStmt.execute();
        jTextField1.setText(callStmt.getString(1));
    } catch (SQLException ex) {
        Logger.getLogger(Stats.class.getName()).log(Level.SEVERE, null, ex);
    }

最后它不起作用......你能帮助我吗?

1 个答案:

答案 0 :(得分:0)

喜欢这个

create or replace 
FUNCTION xyz RETURN VARCHAR
IS
k Varchar(135);
begin
    k:= 'abc';
RETURN k;
end;

    CallableStatement call = conn.prepareCall("{? = call xyz()}");
    call.registerOutParameter(1, java.sql.Types.VARCHAR);
    call.executeUpdate();
    System.out.println(call.getString(1));

请参阅https://docs.oracle.com/cd/F49540_01/DOC/java.815/a64686/04_call5.htm