Salve a tutti. Ho creato la seguente function sul database:
CREATE OR REPLACE FUNCTION myFunction(fieldname text, tablename text, fieldvalue int)
RETURNS text AS
$BODY$
DECLARE
Out text;
BEGIN
EXECUTE 'SELECT "' || fieldname || '" FROM "'|| tablename || '" WHERE "Id" = ' || fieldvalue || ' LIMIT 1' INTO Out;
RETURN Out;
END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
ALTER FUNCTION myFunction(text, text, int)
OWNER TO myadmin;
GRANT EXECUTE ON FUNCTION myFunction(text, text, int) TO public;
Nel mio workflow utilizzo la seguente sintassi per invocarla, come da manuale:
spResultSet = cmdb.callFunction("myFunction")
.with("fieldname", "Email")
.with("tablename", "User")
.with("fieldvalue", "3")
.execute();
username = spResultSet.get("Email");
Ed ottengo la seguente eccezione:
Error: org.cmdbuild.workflow.CMWorkflowException: org.enhydra.shark.api.internal.toolagent.ToolAgentGeneralException: Sourced file: eval stream : Method Invocation execute
Stessa cosa se provassi ad eseguire una function gia' esistente:
spResultSet = cmdb.callFunction("myFunction").execute().get("_cm_class_list");
Potreste aiutarmi?
Grazie.