【问题标题】:How to call PL/SQL function without parameters in java如何在java中调用不带参数的PL/SQL函数
【发布时间】:2016-05-24 08:11:23
【问题描述】:

我有一个函数,它返回 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);
    }

最后还是不行……你能帮帮我吗?

【问题讨论】:

  • 错误是什么?
  • 您可以在底部查看问题,也许它会有所帮助。 Call pl/sql function in java?
  • 错误是:java.sql.SQLException: Invalid column index

标签: java plsql


【解决方案1】:

这样做

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

【讨论】:

  • 很高兴知道 :-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-08-04
  • 1970-01-01
  • 1970-01-01
  • 2016-11-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多