自分のデータベースのデータを取得するために、Oracleデータベースへの読み取りアクセス権が付与されました。DBAから、必要なのはすべてだと保証するストアドプロシージャが提供されましたが、Rubyからはまだ実行できませんでした。
ruby-oci8gemとoracleインスタントクライアントがインストールされています。
これが私がこれまでに管理してきたことです。
require 'oci8'
conn = OCI8.new('user','pass','//remoteora1:1521/xxxx')
=> #<OCI8::RWHRUBY>
cursor = conn.parse("call REPOSITORY.GET_PMI_ADT( '722833', 'W', null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null)")
=> #<OCI8::Cursor:0x56f4d50>
そして、これは私が立ち往生しているところです。私はこのOCI8::Cursorオブジェクトを持っていますが、それをどうするかわかりません。大量の結果(クエリにnull値が含まれている場合)が返されるはずですが、何も返されません。パラメータを使用して、または使用せずにcursor.execを実行すると(必要なパラメータがわかりません)、エラーが発生します。
cursor.execは
OCIError: ORA-06553: PLS-:
ORA-06553: PLS-:
ORA-06553: PLS-:
ORA-06553: PLS-306: wrong number or typ
ORA-06553: PLS-306: wrong number or type of arguments in call to 'GET_PMI_ADT'
ORA-06553: PLS-306: wrong number or type of arguments in call to 'GET_PMI_ADT'
ORA-06553: PLS-306: wrong number or type of arguments in call to 'GET_PMI_ADT'
ORA-06553: PLS-306: wrong number or type of arguments in call to 'GET_PMI_ADT'
ORA-06553: PLS-306: wrong number or type of arguments in call to 'GET_PMI_ADT'
ORA-06553: PLS-306: wrong number or type of arguments in call to 'GET_PMI_ADT'
ORA-06553: PLS-306: wrong number or type of arguments in call to 'GET_PMI_ADT'
等...
cursor.fetchは
OCIError: ORA-24338: statement handle not executed
誰かがここで何かアイデアを持っていますか?私は頭を抱えています。
まだ見ている人のためにここに更新。ストアドプロシージャをに変更した場合
BEGIN REPOSITORY.GET_PMI_ADT( '722833', 'W', null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null); END;
エラーが発生しました。
OCIERROR: ORA-06550: line 1, column 45:
PLS-00363: expression ' NULL' cannot be used as an assignment target
これは、ストアドプロシージャが正しくないことを確認しますか?それを修正するために行うべき明らかなことはありますか?