Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
![]() |
![]() |
Home -> Community -> Usenet -> c.d.o.misc -> Big confusion with Flexible Parameter Passing
Hi,
A couple of days ago Mark Stock kindly pointed me in the direction of Flexible Parameter Passing for OIS.
It's exactly what I need, but something isn't right... The example procedure header and body below compile fine, and the web page comes up nicely. After I fill in the text boxes (which are auto-generated by the example code) and submit, I get this error in my browser:
Not Found
The requested URL /pls/bnco/!bwwkintt.P_TravelReg was not found on
this server.
Oracle HTTP Server Powered by Apache/1.3.19 Server at...
The error log says:
[warn] mod_plsql: /pls/bnco/!bwwkintt.P_TravelReg is using older style
flexible parameter passing. Refer to the PL/SQL GateWay documentation
on using the 2-Parameter style Flexible Parameter passing mode
This is confusing, because I * am* using the 2 parameter method. However, if I try the 4 parameter method (commented out in example code below) I just get:
... ORA-0 No such object.
The problem may be in my choice of collection type...? I have tried Associative Arrays and Varrays and somethign called OWA.VC_ARR. I have tried initializing them. I have tried the 4 parm and the 2 parm method.
Perhaps someone more experienced can spot my error(s).
Thanks!
Phil
-------HEADER SQL----------
SET SCAN OFF;
CREATE OR REPLACE PACKAGE bwwkintt
AS
TYPE varchar2_tab is TABLE OF VARCHAR2(50);
-- empty_vc_arr OWA.VC_ARR;
PROCEDURE P_TravelReg ( in_names varchar2_tab DEFAULT varchar2_tab(),
in_values varchar2_tab DEFAULT varchar2_tab() );
--PROCEDURE P_TravelReg ( in_names OWA.VC_ARR DEFAULT empty_vc_arr,
in_values OWA.VC_ARR DEFAULT empty_vc_arr );
--PROCEDURE P_TravelReg
--(
END bwwkintt;
/
WHENEVER SQLERROR CONTINUE;
DROP PUBLIC SYNONYM bwwkintt;
WHENEVER SQLERROR EXIT ROLLBACK;
CREATE PUBLIC SYNONYM bwwkintt FOR bwwkintt;
WHENEVER SQLERROR CONTINUE
--WHENEVER SQLERROR EXIT ROLLBACK
SET SCAN ON;
SHOW ERRORS;
-------BODY SQL----------
SET SCAN OFF;
CREATE OR REPLACE PACKAGE BODY bwwkintt
AS
rcs_revision CONSTANT VARCHAR2 (20) := '$Revision: 1.2 $'; global_pidm NUMBER;
PROCEDURE lu_formtext ( in_table_name VARCHAR2, in_column_name VARCHAR2,
in_column_value VARCHAR2 )
IS
sql_query VARCHAR2(200); col_length ALL_TAB_COLUMNS.DATA_LENGTH%TYPE; col_desc ALL_COL_COMMENTS.COMMENTS%TYPE; print_value VARCHAR2(30); CURSOR c_col_info IS SELECT DATA_LENGTH ,COMMENTS FROM ALL_COL_COMMENTS ,ALL_TAB_COLUMNS WHERE ALL_TAB_COLUMNS.TABLE_NAME = UPPER(in_table_name) AND ALL_COL_COMMENTS.TABLE_NAME = ALL_TAB_COLUMNS.TABLE_NAME AND ALL_TAB_COLUMNS.COLUMN_NAME = UPPER(in_column_name) AND ALL_COL_COMMENTS.COLUMN_NAME = ALL_TAB_COLUMNS.COLUMN_NAME;
BEGIN IF in_column_value IS NULL THEN
sql_query := 'SELECT '|| in_column_name || ' FROM ' || in_table_name || ' WHERE pidm = ' || global_pidm; BEGIN EXECUTE IMMEDIATE sql_query INTO print_value; EXCEPTION WHEN NO_DATA_FOUND THEN print_value := ''; END; ELSE print_value := in_column_value; END IF;
-- IF print_value IS NULL
-- -- this is a *new* traveller, so lets's print their default values
-- print_value := get_default_values( in_column_name );
-- END IF;
OPEN c_col_info; FETCH c_col_info INTO col_length ,col_desc; htp.p( col_desc ); twbkfrmt.p_formtext ( in_column_name, col_length, col_length, print_value, cattributes=> 'ID="'|| col_desc || '"' ); htp.br;
FUNCTION f_get_curr_value (
in_names varchar2_tab DEFAULT varchar2_tab()) RETURN VARCHAR2
-- in_names OWA.VC_ARR
, in_values varchar2_tab DEFAULT varchar2_tab()
-- , in_values OWA.VC_ARR
, in_column_name ALL_TAB_COLUMNS.COLUMN_NAME%TYPE DEFAULT NULL
IF in_names.EXISTS(1) THEN FOR i IN in_names.FIRST .. in_names.LAST LOOP IF in_names(i) = in_column_name THEN RETURN in_values(i); END IF; END LOOP; END IF; RETURN NULL;
PROCEDURE P_TravelReg ( in_names varchar2_tab DEFAULT varchar2_tab(),
in_values varchar2_tab DEFAULT varchar2_tab() )
--PROCEDURE P_TravelReg ( in_names OWA.VC_ARR DEFAULT empty_vc_arr,
in_values OWA.VC_ARR DEFAULT empty_vc_arr )
--PROCEDURE P_TravelReg
--(
CURSOR c_info (column_pattern ALL_TAB_COLUMNS.COLUMN_NAME%TYPE) IS SELECT COLUMN_NAME FROM ALL_TAB_COLUMNS WHERE COLUMN_NAME LIKE column_pattern AND TABLE_NAME = 'GWBTRAV'; trip_rowid UROWID; trip_name gwrtrip.trip_name%TYPE; us_depart_date gwrtrip.us_depart_date%TYPE; us_return_date gwrtrip.us_return_date%TYPE; col_name ALL_TAB_COLUMNS.COLUMN_NAME%TYPE; curr_value VARCHAR2(50);
BEGIN
OPEN c_info( 'E_%' ); LOOP FETCH c_info INTO col_name; EXIT WHEN c_info%NOTFOUND; curr_value := f_get_curr_value( in_names, in_values, col_name ); lu_formtext( 'gwbtrav', col_name, curr_value ); END LOOP; -- create button to submit fields htp.formsubmit (NULL, 'Update'); -- close the form htp.formclose; -- Close the web page. twbkwbis.p_closedoc( rtrim( substr(rcs_revision,11), ' $') );END P_TravelReg;
END bwwkintt;
/
WHENEVER SQLERROR CONTINUE;
DROP PUBLIC SYNONYM bwwkintt;
WHENEVER SQLERROR EXIT ROLLBACK;
CREATE PUBLIC SYNONYM bwwkintt FOR bwwkintt;
WHENEVER SQLERROR CONTINUE
--WHENEVER SQLERROR EXIT ROLLBACK
SET SCAN ON;
SHOW ERRORS;
Received on Wed Feb 18 2004 - 16:25:32 CST
![]() |
![]() |