DECLARE
l_error_flag VARCHAR2(1);
l_menu_rowid VARCHAR2(100);
l_menu_entity_rowid VARCHAR2(100);
l_menu_id NUMBER;
l_cnt NUMBER := 0;
c_new_menu_code CONSTANT VARCHAR2(50) := 'CUX_MDM_MENU_SYS_GROUP'; ----新的菜单简称
c_new_menu_name CONSTANT VARCHAR2(100) := 'CUX_MDM菜单_运维_集团'; --用户菜单名
c_copied_menu_code CONSTANT VARCHAR2(50) := 'CUX_MDM_MENU_SYS'; --被复制的菜单名
CURSOR csr_menu_entity IS
SELECT DISTINCT fme.entry_sequence,
fme.sub_menu_id,
fme.function_id,
fme.grant_flag,
fmet.prompt,
fmet.description
FROM fnd_menu_entries fme,
fnd_menu_entries_tl fmet,
fnd_menus fm
WHERE fme.menu_id = fm.menu_id
AND fmet.menu_id = fm.menu_id
AND fmet.entry_sequence = fme.entry_sequence
AND fm.menu_name = c_copied_menu_code;
BEGIN
SELECT fnd_menus_s.nextval
INTO l_menu_id
FROM dual;
l_error_flag := 'N';
fnd_menus_pkg.insert_row(x_rowid => l_menu_rowid,
x_menu_id => l_menu_id,
x_menu_name => c_new_menu_code,
x_user_menu_name => c_new_menu_name,
x_menu_type => NULL,
x_description => NULL,
x_creation_date => SYSDATE,
x_created_by => fnd_global.user_id,
x_last_update_date => SYSDATE,
x_last_updated_by => fnd_global.user_id,
x_last_update_login => fnd_global.login_id);
IF l_menu_rowid IS NULL THEN
dbms_output.put_line('error:' || SQLERRM);
l_error_flag := 'Y';
ELSE
FOR l_menu_entity_rec IN csr_menu_entity LOOP
fnd_menu_entries_pkg.insert_row(x_rowid => l_menu_entity_rowid,
x_menu_id => l_menu_id,
x_entry_sequence => l_menu_entity_rec.entry_sequence,
x_sub_menu_id => l_menu_entity_rec.sub_menu_id,
x_function_id => l_menu_entity_rec.function_id,
x_grant_flag => l_menu_entity_rec.grant_flag,
x_prompt => l_menu_entity_rec.prompt,
x_description => l_menu_entity_rec.description,
x_creation_date => SYSDATE,
x_created_by => fnd_global.user_id,
x_last_update_date => SYSDATE,
x_last_updated_by => fnd_global.user_id,
x_last_update_login => fnd_global.login_id);
IF l_menu_rowid IS NULL THEN
dbms_output.put_line('error:' || SQLERRM);
l_error_flag := 'Y';
ELSE
l_cnt := l_cnt + 1;
END IF;
END LOOP;
END IF;
IF l_error_flag = 'N' AND l_cnt > 0 THEN
dbms_output.put_line('提交编译请求:' || fnd_menu_entries_pkg.submit_compile);
END IF;
EXCEPTION
WHEN OTHERS THEN
dbms_output.put_line(SQLCODE || ',' || SQLERRM);
END;