rsim / ruby-plsql

ruby-plsql gem provides simple Ruby API for calling Oracle PL/SQL procedures. It could be used both for accessing Oracle PL/SQL API procedures in legacy applications as well as it could be used to create PL/SQL unit tests using Ruby testing libraries.
MIT License
136 stars 58 forks source link

Composite arguments and Oracle 18c + #183

Closed jgebal closed 4 years ago

jgebal commented 4 years ago

Seems like the support for PL/SQL records, Collections will no longer work with ruby-plsql on Oracle 18c and above.

Oracle has changed the content of ALL_ARGUMENTS data-dictionary. https://github.com/jOOQ/jOOQ/issues/7861

stale[bot] commented 4 years ago

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.

clamp84 commented 4 years ago

@jgebal Did you encounter any issues related to this? On Oracle 19 we are seeing odd behavior. When a function returns a record the result is always an empty object {}. Is this related? Thanks

jgebal commented 4 years ago

Not sure. I'm not using ruby-plsql for quite some time now.

ojbucao commented 4 years ago

@jgebal I'm curious. What alternative are you using?

jgebal commented 4 years ago

I'm using utPLSQL v3 It is using rspec-like expectations syntax in pure PLSQL.

bpom commented 4 years ago

There is no alternative for us to use. The linked issue shows the new metadata catalogs to select. I have planned to adapt ruby-plsql to 19c in September since we do the upgrade in our product then.

Jacek Gębal notifications@github.com schrieb am Mi., 15. Juli 2020, 03:25:

I'm using utPLSQL v3 http://utplsql.org It is using rspec-like expectations syntax in pure PLSQL.

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/rsim/ruby-plsql/issues/183#issuecomment-658492326, or unsubscribe https://github.com/notifications/unsubscribe-auth/ABBE2CCY7MACTC72QMIYXQTR3UARXANCNFSM4JSZNB7Q .

AvneetBaweja commented 3 years ago

@bpom how did you "adapt ruby-plsql to 19c" . could you please share the details?

bpom commented 3 years ago

@AvneetBaweja which details do you need? You can review the pull request #196

As a summary: for records, associative arrays and cursors the metadata are now selected from all_plsql_types, all_plsql_coll_types, all_plsql_type_attrs instead of all_arguments since Oracle has removed the entries for such types in 18c

AvneetBaweja commented 3 years ago

Hello @bpom and @yahonda

I see that the changes usder this pull reqyuest has been released into latest version of ruby-plsql gem.

I have installed the required gems on my machine but i am not able to work with complex datatypes in oracle 19c.

here is my list of gems LOCAL GEMS

bigdecimal (default: 1.2.8) builder (3.2.4) bundler (2.2.25) did_you_mean (1.0.0) diff-lcs (1.4.4) io-console (default: 0.4.5) json (default: 1.8.3) mini_portile2 (2.1.0) minitest (5.8.5) net-telnet (0.1.1) nokogiri (1.6.8.1 x64-mingw32) power_assert (0.2.6) psych (default: 2.1.0) rake (10.4.2) rdoc (default: 4.2.1) rspec (3.10.0) rspec-core (3.10.1) rspec-expectations (3.10.1) rspec-mocks (3.10.2) rspec-support (3.10.2) rspec_junit_formatter (0.4.1, 0.2.3) ruby-oci8 (2.2.8 x64-mingw32, 2.2.4 x64-mingw32) ruby-plsql (0.8.0, 0.7.1) ruby-plsql-spec (0.5.0) rubygems-update (3.2.25) test-unit (3.1.5) thor (0.19.4)

And this is the error i am getting when trying to run a package function. 1) control_sheets GIVEN a call to get_param_value WHEN parameter array is empty it returns null Failure/Error: plsql.control_sheet.get_param_value(nil,-1)

 OCIError:
   ORA-00911: invalid character
   ORA-06512: at line 4
  stmt.c:267:in oci8lib_230.so
  ./spec/unit/controlSheetTest.rb:213:in `block (3 levels) in <top (required)>'
  ./spec/spec_helper.rb:80:in `block (2 levels) in <top (required)>'

The exact call works in 11g oracle . Could you please help me here. Thanks