0

私はこれを検索し、多くのことを試したので、誰かが私を助けてくれることを願っています.

次のパラメータを持つプロシージャを含む 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 パラメータまで問題なく多数のプロシージャを正常に呼び出したので、欠けている単純なものが必要です。

4

1 に答える 1