Home » D2k » QUERY_PARAMETER built-in Oracle D2k / Oracle Forms 6i / 10g

QUERY_PARAMETER built-in Oracle D2k / Oracle Forms 6i / 10g

QUERY_PARAMETER built-in Oracle D2k / Oracle Forms 6i / 10g

Description
Displays the Query Parameter dialog showing the current values of the specified substitution parameters.
End users can set the value of any parameter you include in the list.
The Query Parameter dialog is modal, and control does not return to the calling trigger or procedure until
the end user either accepts or cancels the dialog. This means that any PL/SQL statements that follow the
call to QUERY_PARAMETER are not executed until the Query Parameter dialog is dismissed.
Syntax
PROCEDURE QUERY_PARAMETER
(parameter_string VARCHAR2);
Built-in Type unrestricted procedure
Parameters
parameter_string Specifies a string of substitution parameters for a menu item. The syntax
for specifying the parameter_string parameter requires the ampersand
&parm_name. Substitution parameters are referenced in PL/SQL code
with the colon syntax ":param_name" used for all bind variables).
QUERY_PARAMETER examples
/*
** Built-in: QUERY_PARAMETER
** Example: Prompt for several menu parameters
** programmatically, validating their contents.
*/
PROCEDURE Update_Warehouse IS
validation_Err BOOLEAN;
BEGIN
WHILE TRUE LOOP
Query_Parameter(’&p1 &q2 &z6’);
/*
** If the user did not Cancel the box the Menu_Success
** function will return boolean TRUE.
*/
IF Menu_Success THEN
IF TO_NUMBER( :q2 ) NOT BETWEEN 100 AND 5000 THEN
Message(’Qty must be in the range 100..5000’);
Bell;
Validation_Err := TRUE;
END IF;
/*
** Start a sub-block so we can catch a Value_Error
** exception in a local handler
*/
BEGIN
IF TO_DATE( :z6 ) < SYSDATE THEN
Message(’Target Date must name a day in the future.’);
Bell;
Validation_Err := TRUE;
END IF;
EXCEPTION
WHEN VALUE_ERROR THEN
Message(’Target Date must be of the form DD-MON-YY’);
Bell;
Validation_Err := TRUE;
END;
/*
** If we get here, all parameters were valid so do the
** Update Statement.
*/
IF NOT Validation_Err THEN
UPDATE WAREHOUSE
SET QTY_TO_ORDER = QTY_TO_ORDER*0.18
WHERE TARGET_DATE = TO_DATE(:z6)
AND QTY_ON_HAND > TO_NUMBER(:q2)
AND COST_CODE LIKE :p1||’%’;
END IF;
ELSE
/*
** If Menu_Success is boolean false, then return back
** from the procedure since user cancelled the dialog
*/
RETURN;
END IF;
END LOOP;
END;