Skip to content

Commit d58b96b

Browse files
yahondaclaude
andcommitted
Add test for TABLE OF %ROWTYPE parameter in package
Reproduces the issue reported in #200 where ensure_tmp_tables_created generates invalid DDL containing %ROWTYPE literally. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent 412d59e commit d58b96b

1 file changed

Lines changed: 34 additions & 0 deletions

File tree

spec/plsql/procedure_spec.rb

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2426,3 +2426,37 @@ def new_candidate(status)
24262426
expect(field_names.none? { |name| name.to_s.start_with?("sys_nc") }).to be true
24272427
end
24282428
end
2429+
2430+
describe "Function with TABLE OF %ROWTYPE parameter defined in package" do
2431+
before(:all) do
2432+
plsql.connect! CONNECTION_PARAMS
2433+
plsql.execute "DROP PACKAGE test_rowtype_pkg" rescue nil
2434+
plsql.execute "DROP TABLE test_rowtype_tbl" rescue nil
2435+
plsql.execute "CREATE TABLE test_rowtype_tbl (id NUMBER, name VARCHAR2(50))"
2436+
plsql.execute <<-SQL
2437+
CREATE OR REPLACE PACKAGE test_rowtype_pkg IS
2438+
TYPE t_tab IS TABLE OF test_rowtype_tbl%ROWTYPE;
2439+
FUNCTION test_fn(p_tab IN t_tab) RETURN NUMBER;
2440+
END;
2441+
SQL
2442+
plsql.execute <<-SQL
2443+
CREATE OR REPLACE PACKAGE BODY test_rowtype_pkg IS
2444+
FUNCTION test_fn(p_tab IN t_tab) RETURN NUMBER IS
2445+
BEGIN
2446+
RETURN p_tab.COUNT;
2447+
END;
2448+
END;
2449+
SQL
2450+
end
2451+
2452+
after(:all) do
2453+
plsql.execute "DROP PACKAGE test_rowtype_pkg" rescue nil
2454+
plsql.execute "DROP TABLE test_rowtype_tbl" rescue nil
2455+
plsql.logoff
2456+
end
2457+
2458+
it "should execute function with TABLE OF %ROWTYPE parameter" do
2459+
result = plsql.test_rowtype_pkg.test_fn([{ id: 1, name: "test" }])
2460+
expect(result).to eq(1)
2461+
end
2462+
end

0 commit comments

Comments
 (0)