I use ORDS 23.4 with Tomcat 9.0.85
I have a simple package PL/SQL with a form which use a (TYPE t_param IS TABLE OF VARCHAR2(4000))
When I compile and run for first time it works correctly, but when I change de name of variable a2_test (all occurrencies), it throw PLS-00306: wrong number or types of arguments in call to 'SEND'. If I change the name of the procedure it works and run correctly again.
Perhaps version 23.4 uses some cache, the same code after a 1 hour pass, works fine, too.
With ORDS 21.4.2 and Tomcat 9.0.60 it works allways correctly.
Here is the code for test the problem:
SET DEFINE OFF;
CREATE OR REPLACE PACKAGE TEST_PACKAGE AS
TYPE t_param IS TABLE OF VARCHAR2(4000)
INDEX BY BINARY_INTEGER;
PROCEDURE TEST;
PROCEDURE SEND(a2_test t_param);
FUNCTION authorize RETURN BOOLEAN;
END TEST_PACKAGE;
/
CREATE OR REPLACE PACKAGE BODY TEST_PACKAGE AS
--------------------------------------------------------------------------------------------------------------
PROCEDURE TEST IS
i INTEGER:=0;
BEGIN
htp.print('<html><body>');
htp.print('<H1>Test</H1>');
htp.formOpen(owa_util.get_owa_service_path||'TEST_PACKAGE.send', 'POST', cattributes=>'name="Form1"');
FOR i IN 1..5
LOOP
htp.formHidden('a2_test',1);
END LOOP;
htp.br; htp.br;
htp.print('<input type="submit" value="Send" CLASS="boto">');
htp.formClose;
htp.print('</body></html>');
END test;
-------------------------------------------------------------------------------------------------------------
PROCEDURE SEND (a2_test t_param) IS
BEGIN
htp.bold('Send ok');
END send;
-------------------------------------------------------------------------------------------------------------
FUNCTION authorize RETURN BOOLEAN IS
BEGIN
RETURN (TRUE);
END authorize;
--------------------------------------------------------------------------------------------------------------
END TEST_PACKAGE;