Main Tables Views Indexes Constraints Triggers Procedures Functions Packages Sanity check Index

ACS3 Data Model

Arguments Source

BM_FIXUP_SORT_KEY

Arguments:

NameData TypeDefault ValueIn/Out
V_BOOKMARK_IDINTEGER(38.0) IN

Source

Source
     1: PROCEDURE bm_fixup_sort_key(v_bookmark_id IN INTEGER)
     2: IS
     3:    v_row 		bm_list%ROWTYPE;
     4:    v_last_sort_key 	bm_list.local_sort_key%TYPE;
     5:    v_parent_sort_key 	bm_list.parent_sort_key%TYPE;
     6:    cursor child_cursor(v_parent_id integer) IS
     7:      SELECT bookmark_id FROM bm_list WHERE parent_id = v_parent_id;
     8: BEGIN
     9:    SELECT * INTO v_row FROM bm_list WHERE bookmark_id = v_bookmark_id;
    10:    IF v_row.parent_id IS NULL THEN
    11:       -- Handle top-level changes
    12:       SELECT max(local_sort_key) INTO v_last_sort_key
    13: 	FROM bm_list
    14: 	WHERE parent_id IS NULL;
    15:       UPDATE bm_list SET parent_sort_key = NULL, local_sort_key = new_sort_key(v_last_sort_key) WHERE bookmark_id = v_bookmark_id;
    16:    ELSE
    17:       -- we're in a subfolder
    18:       SELECT max(local_sort_key) INTO v_last_sort_key
    19: 	FROM bm_list
    20: 	WHERE parent_id = v_row.parent_id;
    21:       SELECT parent_sort_key || local_sort_key INTO v_parent_sort_key FROM bm_list WHERE bookmark_id = v_row.parent_id;
    22:       UPDATE bm_list SET parent_sort_key = v_parent_sort_key, local_sort_key = new_sort_key(v_last_sort_key) WHERE bookmark_id = v_bookmark_id;
    23:    END IF;
    24: 
    25:    -- Recursively run on children if this is a folder.
    26:    IF v_row.folder_p = 't' THEN
    27:       FOR child_row IN child_cursor(v_bookmark_id) LOOP
    28: 	 bm_fixup_sort_key(child_row.bookmark_id);
    29:       END LOOP;
    30:    END IF;
    31: END bm_fixup_sort_key;


Generated by OraSchemaDoc, (c) Aram Kananov, 2002