I defined a Derby function that calls a static method as follows:
CREATE FUNCTION x() RETURNS INTEGER PARAMETER STYLE JAVA CONTAINS SQL LANGUAGE JAVA EXTERNAL NAME 'com.huge.Funcs.x';
This function both reads and writes to tables using a nested connection. When called, Derby complains, rightfully:
"The routine attempted to read data, but the routine was not defined as READS SQL DATA."
So, I changed the CREATE FUNCTION to read:
CREATE FUNCTION x() RETURNS INTEGER PARAMETER STYLE JAVA READS SQL DATA LANGUAGE JAVA EXTERNAL NAME 'com.huge.Funcs.x';
This time, when called, Derby complains:
"The routine attempted to modify data, but the routine was not defined as MODIFIES SQL DATA."
So, I again changed it again to read:
CREATE FUNCTION x() RETURNS INTEGER PARAMETER STYLE JAVA MODIFIES SQL DATA LANGUAGE JAVA EXTERNAL NAME 'com.huge.Funcs.x';
But this time, Derby complains about the CREATE FUNCTION itself:
"Syntax error: MODIFIES SQL DATA."
So, Derby says I have to use MODIFIES SQL DATA, but it's a syntax error to do so? What's up with that?
Thanks for any insight. --Sean
