我有一个函数,它返回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);
}
最后它不起作用......你能帮助我吗?
答案 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