我有一个包含以下参数的过程的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
}
我不断收到类似的错误:如果我删除sql.inout
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)
只是传入一个变量,它运行但不正确,因为它不是从Oracle返回密码变量。我已经成功地从这个包中调用了大量程序,直到IN OUT参数为止,所以必须有一些简单的东西丢失。
2013-07-26
tnichol
+0
看看这个错误,问题出在'G $ _SECURITY'上,具体来说就是'$ _SECURITY'。当用'$'前置时'_SECURITY'被视为变量。你在应用程序中使用了双引号“''',但是我发现你已经使用过''' –
+0
这就是为什么我说我已经”成功地调用了这个程序包中的很多程序而没有问题“:)我碰到如果我摆脱了sql.inout,只是传入一个变量并继续使用与$相同的包名称,错误消失,但行为不是预期的那样 –