Re: Exception while executing function with CallableStatement
От | Andrew Lazarus |
---|---|
Тема | Re: Exception while executing function with CallableStatement |
Дата | |
Msg-id | 00ae01c404cd$3bfb2ca0$847ba8c0@ANDYXP обсуждение исходный текст |
Ответ на | Exception while executing function with CallableStatement ("Philip A. Chapman" <pchapman@pcsw.us>) |
Список | pgsql-jdbc |
From: Philip A. ChapmanSent: Sunday, March 07, 2004 8:44 PMSubject: [JDBC] Exception while executing function with CallableStatementEveryone,I have the following function set up in the database:CREATE FUNCTIONInsTimeLog(INTEGER, -- ProjectIDINTEGER, -- PersonellIDINTEGER, -- FeeTypeCodeDATE, -- LogDateINTEGER, -- Hours LoggedINTEGER, -- Minutes LoggedINTEGER, -- InvoiceIDVARCHAR(30) -- Comment) RETURNS INT4 -- ProjectIDAS'DECLAREpProjectID ALIAS FOR $1;pPersonellID ALIAS FOR $2;pFeeTypeCode ALIAS FOR $3;pLogDate ALIAS FOR $4;pHoursLogged ALIAS FOR $5;pMinutesLogged ALIAS FOR $6;pInvoiceID ALIAS FOR $7;pComment ALIAS FOR $8;vID INT4;BEGIN--- Insert the new recordINSERT INTOTimeLog(ProjectID,PersonellID,FeeTypeCode,LogDate,HoursLogged,MinutesLogged,InvoiceID,Comment) VALUES (pProjectID,pPersonellID,pFeeTypeCode,pLogDate,pHoursLogged,pMinutesLogged,pInvoiceID,pComment);--- Return the ID of the newly inserted recordSELECT last_value INTO id FROM timelog_timelogid_seq;RETURN vID;END;'LANGUAGE 'plpgsql';The following Java code is used to execute the function:CallableStatement proc = con.prepareCall
("{ ? = call InsTimeLog ( ?, ?, ?, ?, ?, ?, ?, ? ) }");
proc.registerOutParameter(1, Types.INTEGER);
proc.setInt(2, getProjectID());
proc.setInt(3, getPersonellID());
proc.setInt(4, getFeeTypeCode().getLookupID());
proc.setDate(5, getLogDate());
proc.setInt(6, getHours());
proc.setInt(7, getMinutes());
if (getInvoiceID() > 0) {
proc.setInt(8, getInvoiceID());
} else {
proc.setNull(8, Types.INTEGER);
}
if (getComment() == null) {
proc.setNull(9, Types.VARCHAR);} else {
proc.setString(9, getComment());
}
proc.execute();
newID = proc.getInt(1);
proc.close();When the 8th and 9th parameters are set to null, I get the following error:
org.postgresql.util.PSQLException: ERROR: function instimelog(integer, integer,
integer, "unknown", integer, integer, "unknown", "unknown") does not existSince I'm setting the type using Types.INTEGER and Types.VARCHAR, I do not know why the exception is listing the types for the eight and nineth fields as "unknown". I would appreciate any help.
Thanks,
В списке pgsql-jdbc по дате отправления: