我需要调用这个 Oracle 函数,它从 groovy 脚本(SOAPUI)返回一个 RECORD 类型的值。然后从结果中捕获字段值 ID1。
甲骨文功能:
FUNCTION ReserveParams(p_Data SYS.XMLType, p_USER_ID number) return TParams;
和返回结果的类型:
type TParams is record(
ID number := null,
PAR1 varchar2(100) := null,
PAR2 SYS.XMLType,
ID1 number := null,
ErrorCode NUMBER(14) := 0,
ErrorMesage VARCHAR2(4000) := null );
使用闭包运行 groovy.sql 方法 sql.execute 我没有为闭包获得任何价值。当我使用 sql.call 时,我收到一个错误,因为我无法在此处定义结果类型。我觉得我有一个错误,但找不到正确的解决方案。有谁能够帮我?
这是我从 GROOVY 脚本调用的 2 种类型的代码:
def p_Data varchar2(1000 Byte) = '<RESERV><ID>222222</ID><AGRTYPE>1</AGRTYPE></RESERV>'
def p_User = 9999
sql.execute("DECLARE
result TParams;
p_Data varchar2(10000 Byte) := +p_Data+ ;
p_USER_ID NUMBER := +p_User+ ;
ID1 NUMBER;
BEGIN
result := ReserveParams (
P_DATA => XMLTYPE (p_Data),
p_USER_ID => p_USER_ID);
ID1 := result.ID1;
END;")
{ID1 -> log.info ID1}
res = sql.call ("{call ReserveParams(?,?,?)}", [p_Data, p_User, ?????TParams])