Using API FND_PROFILE.save to update profile from backend (转)
Syntax
FND_PROFILE.SAVE(<Profile_Option_Name>,
<Profile_Option_Value>,
<Level SITE/APPL/RESP/USER>,
<Level_Value>,
<Level_Value_App_id>);
Example
SET SERVEROUTPUT ON SIZE 1000000
DECLARE
l_user_id NUMBER;
l_resp_id NUMBER;
l_resp_app_id NUMBER;
l_success BOOLEAN;
BEGIN
l_user_id := 1068; --****Use your user id to replace,1068 is MFG***
--
-- This will set value of profile option 'INV_DEBUG_LEVEL' at SITE level to 11
--
l_success := FND_PROFILE.save
( x_name => 'INV_DEBUG_LEVEL'
, x_value => 11
, x_level_name => 'SITE'
, x_level_value => NULL
, x_level_value_app_id => NULL
) ;
IF l_success
THEN
DBMS_OUTPUT.put_line('Profile Updated successfully at site Level');
ELSE
DBMS_OUTPUT.put_line('Profile Update Failed at site Level. Error:'||sqlerrm);
END IF;
--
-- This will set value of profile option 'INV_DEBUG_LEVEL' at RESP level to 11
--
SELECT responsibility_id
, application_id
INTO l_resp_id
, l_resp_app_id
FROM fnd_responsibility
WHERE responsibility_key = 'INVENTORY';
l_success := FND_PROFILE.save
( x_name => 'INV_DEBUG_LEVEL'
, x_value => 11
, x_level_name => 'RESP'
, x_level_value => l_resp_id --responsibility_id
, x_level_value_app_id => l_resp_app_id --401
) ;
IF l_success
THEN
DBMS_OUTPUT.put_line('Profile Updated successfully at responsiblity Level');
ELSE
DBMS_OUTPUT.put_line('Profile Update Failed at site Level. Error:'||sqlerrm);
END IF;
--
-- This will set value of profile option 'INV_DEBUG_LEVEL' at user level to 11
--
l_success := FND_PROFILE.save
( x_name => 'INV_DEBUG_LEVEL'
, x_value => 11
, x_level_name => 'USER'
, x_level_value => l_user_id
) ;
IF l_success
THEN
DBMS_OUTPUT.put_line('Profile Updated successfully at user Level');
ELSE
DBMS_OUTPUT.put_line('Profile Update Failed at site Level. Error:'||sqlerrm);
END IF;
--Commit is needed because this function will not commit
Commit;
END;
/
Useful Queries
SELECT B.USER_PROFILE_OPTION_NAME,A.*
FROM FND_PROFILE_OPTIONS A,FND_PROFILE_OPTIONS_TL B
WHERE A.PROFILE_OPTION_NAME = B.PROFILE_OPTION_NAME
AND A.PROFILE_OPTION_NAME LIKE 'INV_DEBUG%'
AND B.LANGUAGE = 'US';
SELECT C.USER_PROFILE_OPTION_NAME,B.PROFILE_OPTION_NAME,A.*
FROM FND_PROFILE_OPTION_VALUES A,FND_PROFILE_OPTIONS B,FND_PROFILE_OPTIONS_TL C
WHERE B.PROFILE_OPTION_NAME = C.PROFILE_OPTION_NAME
AND A.PROFILE_OPTION_ID = B.PROFILE_OPTION_ID
AND A.APPLICATION_ID = B.APPLICATION_ID
AND C.LANGUAGE = 'US'
AND Upper(C.USER_PROFILE_OPTION_NAME) LIKE Upper('INV%Debug%Trace%');
10001: 'Site',
10002: 'Application',
10003: 'Responsibility',
10004: 'User',
10005: 'Server'
成长
/ | \
学习 总结 分享
QQ交流群:122230156
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 字符编码:从基础到乱码解决