procedure builder works but plus "locks up"
Date: Wed, 27 Sep 2000 17:33:27 GMT
Message-ID: <HbqA5.9264$864.634339_at_news.flash.net>
I have a procedure that locks up when I run it in SQL*Plus but I can step through it fine in Procedure Builder. I have no idea whey it does not work in Plus and would like to figure out a way to "step through it" or figure out why PLUS is "hanging". Any ideas? I'm running SQL*plus 8.0.6 and Procedure Builder is from the developer 6i install.
The source follows:
rem my_lame_script.sql
rem remove set serverout, declare and the ending begin..end in procedure
builder to debug
set serveroutput on size 10000
DECLARE
procedure areas_and_subareas is
/*
set serveroutput on size 100000
DECLARE
rem paprgrsf_areas_and_subareas.sql
rem this will display the area/subarea list that appears in the paprgrsf
form
rem when a park and park unit type have been selected
*/
areas1 NUMBER;
num_area NUMBER;
num_sub_area NUMBER;
areass NUMBER;
Eid_area NUMBER;
Eid_subarea NUMBER;
ndb_owner_Eid parks.eid%type := '6213'; ndb_code_code park_units.park_unit_type_code%type := 'OGT_SITE';
CURSOR areas IS
SELECT eid, park_unit_identifier
FROM park_units
WHERE eid IN (SELECT park_unit_eid_1 FROM park_units WHERE park_eid = ndb_owner_Eid /* &park_eid or :PARK_NAME.ndb_owner_eid */ AND park_unit_type_code = ndb_code_code /* upper('&pu_type') */ );
ident park_units.park_unit_identifier%TYPE;
CURSOR sub_areas IS
SELECT eid , park_unit_identifier FROM park_units WHERE park_unit_level = 2 AND park_unit_eid_1 = Eid_area;
sub_ident park_units.park_unit_identifier%TYPE;
/*
CURSOR p_units IS
SELECT DISTINCT park_unit_type_code FROM park_units
WHERE park_unit_level = 99 AND park_unit_eid_1 IS NULL AND park_eid = :PARK_NAME.ndb_owner_eid AND park_unit_type_code = :FACILITY_TYPE.ndb_code_code;*/
ndb_num_areas_subareas number := 0;
chk_all boolean; type area_rec_type is record ( ndb_area park_units.park_unit_identifier%type ,ndb_area_eid park_units.eid%type ,ndb_subarea park_units.park_unit_identifier%type ,ndb_subarea_eid park_units.eid%type ); type area_tabtype is table of area_rec_type index by binary_integer;
area_subarea area_tabtype;
BEGIN
NDB_NUM_AREAS_SUBAREAS := 0;
CHK_ALL := Null;
/*
go_block('AREA_SUBAREA');
clear_block;
go_block ('FACILITY_TYPE'); go_item('ndb_description'); do_key('LIST_VALUES');
*/
BEGIN
num_area := 0;
--go_block('AREA_SUBAREA');
--Clear_Block;
OPEN areas;
--SET_APPLICATION_PROPERTY(cursor_style, 'BUSY');
LOOP
FETCH areas INTO Eid_area, ident; EXIT WHEN areas%NOTFOUND OR areas%NOTFOUND IS NULL; num_sub_area := 0; OPEN sub_areas; LOOP FETCH sub_areas INTO Eid_subarea, sub_ident; EXIT WHEN sub_areas%NOTFOUND OR sub_areas%NOTFOUND IS NULL; AREA_SUBAREA(ndb_num_areas_subareas).ndb_area := ident; AREA_SUBAREA(ndb_num_areas_subareas).ndb_area_eid := Eid_area; AREA_SUBAREA(ndb_num_areas_subareas).ndb_subarea := sub_ident; AREA_SUBAREA(ndb_num_areas_subareas).ndb_subarea_eid := Eid_subarea; num_area := 1; num_sub_area := 1; --next_record; eid_subarea := NULL; NDB_NUM_AREAS_SUBAREAS := NDB_NUM_AREAS_SUBAREAS + 1; END LOOP; CLOSE sub_areas; if (num_sub_area =0) then NDB_NUM_AREAS_SUBAREAS := NDB_NUM_AREAS_SUBAREAS + 1; AREA_SUBAREA(ndb_num_areas_subareas).ndb_area := ident; AREA_SUBAREA(ndb_num_areas_subareas).ndb_area_eid := Eid_area; --Next_Record; end if; eid_area := NULL;
END LOOP; CLOSE areas;
--first_record;
--for sites directly under park
END; --SET_APPLICATION_PROPERTY(cursor_style, 'DEFAULT');
FOR i in 1..ndb_num_areas_Subareas LOOP
begin dbms_output.put( RPAD(AREA_SUBAREA(i).ndb_area,30) || ' ' ); dbms_output.put( LPAD(AREA_SUBAREA(i).ndb_area_eid,10) || ' ' ); dbms_output.put( RPAD(AREA_SUBAREA(i).ndb_subarea,30) || ' '); dbms_output.put_line( LPAD(AREA_SUBAREA(i).ndb_subarea_eid,10) ); exception when no_data_found then dbms_output.new_line; -- subarea may not be populated end;
END LOOP; END areas_and_subareas;
begin
areas_and_subareas;
end;
/
Received on Wed Sep 27 2000 - 19:33:27 CEST