私はこれを検索し、多くのことを試したので、誰かが私を助けてくれることを願っています.
次のパラメータを持つプロシージャを含む 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 パラメータまで問題なく多数のプロシージャを正常に呼び出したので、欠けている単純なものが必要です。