我已经对此进行了搜索并尝试了很多东西,所以我希望有人可以帮助我。
我有一个 Oracle 包,其中包含具有以下参数的过程:
PROCEDURE g$_verify_password1_prd
( p_object IN VARCHAR2,
p_version IN VARCHAR2,
p_password IN OUT VARCHAR2,
p_role OUT VARCHAR2 )
这是一个 API 调用,由我们的供应商编写,我无法修改,也不想修改。我的问题是 p_password IN OUT 参数。从 Groovy 调用它的语法是什么?我在搜索此问题的答案时发现了 Sql.inout,但无法接受。这是我的代码,请记住我已经尝试了很多事情,这只是我离开的地方:
sql.call '{call G$_SECURITY.G$_VERIFY_PASSWORD1_PRD(?, ?, ?, ?)}',
[$p_object, p_version, ${Sql.inout(Sql.VARCHAR(p_password))}, Sql.VARCHAR],
{ p_password, p_rol ->
//p_password = p_pass
p_role = p_rol
println p_password
println p_rol
}
我不断收到类似以下的错误:
Caught: groovy.lang.MissingPropertyException: No such property: _SECURITY for class: banner.CheckSecurityService
at banner.CheckSecurityService.SecurityCheck(CheckSecurityService.groovy:49)
at banner.Hello2Service.main(Hello2Service.groovy:20)
如果我删除sql.inout
并只传入一个变量,它会运行但不正确,因为它不是从 Oracle 返回密码变量。在 IN OUT 参数之前,我已经成功地从这个包中调用了许多程序而没有问题,所以我必须缺少一些简单的东西。