Naplnění tabulky PL/SQL z bloku v Oracle D2k Forms
Tabulku PL/SQL lze naplnit z bloku pomocí vestavěného implicitního plnění ve formulářích TABLE_FROM_BLOCK. Tato velmi užitečná funkce eliminuje nutnost procházet blokem explicitně. Následující postup ilustruje koncept:PROCEDURE populate_plsql_table(my_table1 my_table, cnt OUT NUMBER)Chcete-li použít tuto techniku, postupujte takto:
IS
/* Define a PL/SQL record with two fields code and name */
TYPE state_rec IS RECORD (code varhcar2(2), name varhcar2(30));
/* Define a PL/SQL table of the record defined above */
TYPE my_table IS TABLE OF state_rec INDEX BY BINARY_INTEGER;
my_table1 my_table;
/* Define a variable of type ITEMS_IN_BLOCK. ITEMS_IN_BLOCK is a
Forms-defined table */
Item_data ITEMS_IN_BLOCK;
Cnt NUMBER;
BEGIN
Item_data(1) := 'STATE_CODE';
item_data(2) := 'STATE_NAME';
/* The call to the Forms built-in TABLE_FROM_BLOCK retrieves the records
from the block and populates the my_table1 table of records */
TABLE_FROM_BLOCK(my_table1, 'STATE',1, ALL_RECORDS, item_data);
-- The SUCCESS or FAILURE of this built-in can be assessed
-- with FORM_SUCCESS, just like any other built-in
IF NOT FORM_SUCCESS THEN
RAISE FORM_TRIGGER_FAILURE;
END IF;
Cnt := my_table1.COUNT;
END populate_plsql_table;
- Definujte záznam PL/SQL tak, aby byl ekvivalentní struktuře záznamu, která má být předána jako vstup. V tomto případě je to state_rec a tvoří dvě položky CODE a NAME odpovídající STATE_CODE a STATE_NAME.
- Definujte tabulku PL/SQL jako tabulku záznamů typu definovaného v kroku 1. V tomto případě je to my_table.
PoznámkaDokumentace Oracle definuje tabulku PL/SQL jako typ PLITBLM.TABLE_OF_ANY, ale definování tabulky PL/SQL způsobem, který jsem popsal, funguje dobře.
- Definujte proměnnou typu ITEMS_IN_BLOCK (tabulka VARCHAR2 ) a nastavte jeho jednotlivé prvky tak, aby byly názvy názvů položek bloku, jejichž hodnoty figurují jako prvky typu záznamu definovaného v kroku 1.
- Zavolejte na vestavěný TABLE_OF_ANY s definovanou PL/SQL tabulkou, názvem vstupního bloku, číslem počátečního záznamu, číslem konce záznamu a proměnnou definovanou v kroku 3 předanými jako parametry.