Skip to content

tables as parameters malfunction when using ruby-oci8 v2.0.6 #19

@damada

Description

@damada

When passing a table to a procedure, the table is received as empty when using ruby-oci8 v2.0.6.
Below is example PL/SQL and Ruby.

--BEGIN PL/SQL
--CREATE TYPES

create or replace
TYPE example_o AS OBJECT
(aa INTEGER, bb INTEGER);

create or replace
TYPE example_t IS TABLE OF example_o;

--CREATE PACKAGES
create or replace
PACKAGE EXAMPLE_PKG
IS

PROCEDURE oci_fail_example(example_table_in example_t); 

END;

create or replace
PACKAGE BODY EXAMPLE_PKG
IS

PROCEDURE oci_fail_example(
    example_table_in example_t )
IS

BEGIN
dbms_output.put_line(example_table_in(1).aa);

  -- ORA-06531: Reference to uninitialized collection results from the below
  dbms_output.put_line(example_table_in(1).bb);
  dbms_output.put_line('aaa');
END oci_fail_example;

END;

--END PL/SQL

BEGIN TEST SPEC EXAMPLE

require File.expand_path('spec/spec_helper')
plsql.dbms_output_stream = STDOUT

describe "The function oci_fail_example()" do

testdate = Time.local(2011,03,01,00)

test_table = [{ :aa => 1,
:bb => -1},
{:aa => 2,
:bb => -1},
{:aa => 3,
:bb => -1}
]

it "1. " do

plsql.example_pkg.oci_fail_example(test_table)

end

end

END TEST SPEC EXAMPLE

The reason for failure seems to be that ruby-oci8 2.0.6 does not work the same as 2.0.4.
The failure is experienced on 2.0.6:

F

Failures:

  1. The function oci_fail_example() 1.
    Failure/Error: plsql.example_pkg.oci_fail_example(test_table)
    OCIError:
    ORA-06531: Reference to uninitialized collection
    ORA-06512: at "DTE.EXAMPLE_PKG", line 8
    ORA-06512: at line 5

    stmt.c:312:in oci8lib_191.so

    ./spec/test_spec.rb:23:in `block (2 levels) in <top (required)>'

Finished in 0.07007 seconds
1 example, 1 failure

Failed examples:

rspec ./spec/test_spec.rb:20 # The function oci_fail_example() 1.
false
Failing tests!

If I rollback to 2.0.4, then it works as expected.

A possible short term fix is to depend on =2.0.4, not >=2.0.4

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions