The following lines contain the word 'select', 'insert', 'update' or 'delete':
Bug#4045278: Overloaded for Setting Time Stamp for Data set to take in last_update_date parameter
-------------------------------------------------------------------------------------------*/
Procedure SET_TIME_STAMP_DATASET (
p_dataset_id IN number
,p_lud IN BSC_SYS_DATASETS_B.LAST_UPDATE_DATE%TYPE
,x_return_status OUT NOCOPY varchar2
,x_msg_count OUT NOCOPY number
,x_msg_data OUT NOCOPY varchar2
) is
l_cursor BSC_BIS_LOCKS_PUB.t_cursor;
SELECT MEASURE_ID1, OPERATION, MEASURE_ID2
FROM BSC_SYS_DATASETS_VL
WHERE DATASET_ID =:1';
SELECT DISTINCT DATASET_ID
FROM BSC_SYS_DATASETS_B
WHERE (MEASURE_ID1 =:1 OR MEASURE_ID1 =:2
OR MEASURE_ID2 =:3 OR MEASURE_ID2 =:4)';
Bug#4045278: Overloaded for Setting Time Stamp for Datasource to take in last_update_date parameter
-------------------------------------------------------------------------------------------*/
Procedure SET_TIME_STAMP_DATASOURCE (
p_measure_id IN number
,p_lud IN BSC_SYS_MEASURES.LAST_UPDATE_DATE%TYPE
,x_return_status OUT NOCOPY varchar2
,x_msg_count OUT NOCOPY number
,x_msg_data OUT NOCOPY varchar2
) is
begin
SAVEPOINT BSCSetTimeDataSrcPUB;
SELECT DISTINCT DATASET_ID
FROM BSC_SYS_DATASETS_B
WHERE (MEASURE_ID1 =:1 OR MEASURE_ID1 =:2
OR MEASURE_ID2 =:3 OR MEASURE_ID2 =:4)';
SELECT DISTINCT KM.INDICATOR
FROM bsc_kpi_analysis_measures_b KM,
( SELECT DATASET_ID
FROM BSC_SYS_DATASETS_B
WHERE MEASURE_ID1 IN (:1,:2)
UNION ALL
SELECT DATASET_ID
FROM BSC_SYS_DATASETS_B
where MEASURE_ID2 IN (:3,:4)
) D
WHERE KM.DATASET_ID = D.DATASET_ID';
4.2.2. Lock prcedure to Update an existing Measure
-------------------------------------------------------------------------------------------------------------------*/
Procedure LOCK_UPDATE_MEASURE (
p_dataset_id IN number
,p_time_stamp IN varchar2 /*:= null*/
,x_return_status OUT NOCOPY varchar2
,x_msg_count OUT NOCOPY number
,x_msg_data OUT NOCOPY varchar2
) is
Begin
LOCK_DATASET (
p_dataset_id => p_dataset_id
,p_time_stamp => p_time_stamp
,x_return_status => x_return_status
,x_msg_count => x_msg_count
,x_msg_data => x_msg_data
);
end LOCK_UPDATE_MEASURE;
4.2.3. Lock prcedure to Delete an existing Measure
-------------------------------------------------------------------------------------------------------------------*/
Procedure LOCK_DELETE_MEASURE (
p_dataset_id IN number
,p_time_stamp IN varchar2 /*:= null*/
,x_return_status OUT NOCOPY varchar2
,x_msg_count OUT NOCOPY number
,x_msg_data OUT NOCOPY varchar2
) is
Begin
LOCK_DATASET (
p_dataset_id => p_dataset_id
,p_time_stamp => p_time_stamp
,x_return_status => x_return_status
,x_msg_count => x_msg_count
,x_msg_data => x_msg_data
);
end LOCK_DELETE_MEASURE;
p_selected_dim_objets: Array with the Ids corresponding to the Dimesion Objects
that will be assigned to the new dimension.
-------------------------------------------------------------------------------------------*/
Procedure LOCK_CREATE_DIMENSION (
p_selected_dim_objets IN t_numberTable
,x_return_status OUT NOCOPY varchar2
,x_msg_count OUT NOCOPY number
,x_msg_data OUT NOCOPY varchar2
) is
Begin
SAVEPOINT BSCLockCreDimPUB;
p_selected_dim_objets
,x_return_status
,x_msg_count
,x_msg_data
);
Procedure LOCK_UPDATE_DIMENSION
This Procedure will make all the necessaries locks to Update a Dimension (Dimension Group)
according with the PMD UI for 'Performance Measures > Dimensions > Update Dimension'
This procedure will lock the dimension passed in the parameter p_dimension_id,
the dimension objects passed in the parameter p_selected_dim_objets,
and the dimension set (in the kpis) that uses the dimension when it is necessary.
p_dimension_id: Dimension Id (Dimension Group) to update
p_selected_dim_objets: This array has the Ids corresponding to the Dimension Objects
that will have the dimension.
p_time_stamp: Last update of dimension information changed by the user
-------------------------------------------------------------------------------------------*/
Procedure LOCK_UPDATE_DIMENSION (
p_dimension_id IN number
,p_selected_dim_objets IN t_numberTable
,p_time_stamp IN varchar2 /*:= null*/
,x_return_status OUT NOCOPY varchar2
,x_msg_count OUT NOCOPY number
,x_msg_data OUT NOCOPY varchar2
) is
Begin
SAVEPOINT BSCLockUpdDimPUB;
BSC_BIS_LOCKS_PVT.LOCK_UPDATE_DIMENSION (
p_dimension_id
,p_selected_dim_objets
,p_time_stamp
,x_return_status
,x_msg_count
,x_msg_data
) ;
end LOCK_UPDATE_DIMENSION;
Procedure LOCK_UPDATE_DIM_OBJ_IN_DIM
This procedure will make all the necessaries locks to Update a Dimension
Object propertis in a dimencion.
(Dimension level properties in a Dimension Group
-------------------------------------------------------------------------------------------*/
Procedure LOCK_UPDATE_DIM_OBJ_IN_DIM(
p_dim_object_id IN number
,p_dimension_id IN number
,p_time_stamp IN varchar2
,x_return_status OUT NOCOPY varchar2
,x_msg_count OUT NOCOPY number
,x_msg_data OUT NOCOPY varchar2
)is
Begin
SAVEPOINT BSCLockUpdDimInObjPUB;
BSC_BIS_LOCKS_PVT.LOCK_UPDATE_DIM_OBJ_IN_DIM(
p_dim_object_id
,p_dimension_id
,p_time_stamp
,x_return_status
,x_msg_count
,x_msg_data
) ;
End LOCK_UPDATE_DIM_OBJ_IN_DIM;
p_selected_dimensions: This Array has the Ids corresponding to the Dimensions where
the dimension object will be assigned.
-------------------------------------------------------------------------------------------*/
Procedure LOCK_CREATE_DIMENSION_OBJECT(
p_selected_dimensions IN t_numberTable
,x_return_status OUT NOCOPY varchar2
,x_msg_count OUT NOCOPY number
,x_msg_data OUT NOCOPY varchar2
) is
Begin
SAVEPOINT BSCLockCreDimObjPUB;
p_selected_dimensions
,x_return_status
,x_msg_count
,x_msg_data
) ;
Procedure LOCK_UPDATE_DIMENSION_OBJECT
This procedure will make all the necessaries locks to Update a Dimension Object (Dimension Level)
according with the PMD UI for 'Performance Measures > Dimensions > Dimension Objects >
Update Dimension Object'
p_dim_object_id: Dimension Object Id (Dimension Level) to update
p_selected_dim_objets: This array has the Ids corresponding to the Dimension Objects
that will have the dimension.
p_time_stamp: Last update of dimension object information changed by the user.
It is mandatory in order of checking if the dimension object has been
updated by other user.
-------------------------------------------------------------------------------------------*/
Procedure LOCK_UPDATE_DIMENSION_OBJECT(
p_dim_object_id IN number
,p_selected_dimensions IN t_numberTable
,p_time_stamp IN varchar2
,x_return_status OUT NOCOPY varchar2
,x_msg_count OUT NOCOPY number
,x_msg_data OUT NOCOPY varchar2
) is
Begin
SAVEPOINT BSCLockUpdDimObjPUB;
BSC_BIS_LOCKS_PVT.LOCK_UPDATE_DIMENSION_OBJECT(
p_dim_object_id
,p_selected_dimensions
,p_time_stamp
,x_return_status
,x_msg_count
,x_msg_data
) ;
end LOCK_UPDATE_DIMENSION_OBJECT;
Procedure LOCK_UPDATE_DIM_OBJ_RELATIONSHIPS
This process Lock all affected object when the relationships for a given dimension
object are updated.
p_dim_object_id: Dimension Object Id (Dimension Level) to update
p_selected_parends: This array has the Ids corresponding to the Parent Dimension Objects
that will have the dimension object (Selected Parent Dimension Objects)
p_selected_childs: This array has the Ids corresponding to the Child Dimension Objects
that will have the dimension object (Selected Child Dimension Objects).
p_time_stamp: Last update of dimension object information changed by the user.
It is mandatory in order of checking if the dimension object has
been updated by other user.
-------------------------------------------------------------------------------------------*/
Procedure LOCK_UPDATE_RELATIONSHIPS(
p_dim_object_id IN number
,p_selected_parends IN t_numberTable
,p_selected_childs IN t_numberTable
,p_time_stamp IN varchar2
,x_return_status OUT NOCOPY varchar2
,x_msg_count OUT NOCOPY number
,x_msg_data OUT NOCOPY varchar2
) is
Begin
SAVEPOINT BSCLockUpdDimRelsPUB;
BSC_BIS_LOCKS_PVT.LOCK_UPDATE_RELATIONSHIPS(
p_dim_object_id
,p_selected_parends
,p_selected_childs
,p_time_stamp
,x_return_status
,x_msg_count
,x_msg_data
) ;
end LOCK_UPDATE_RELATIONSHIPS;
p_Action_Type -> action on object ie create,update,delete
Creator :- KRISHNA 19-OCT-2004
/***********************************************************************/
PROCEDURE Lock_Designer_Session_AT (
p_Entity_Name IN VARCHAR2
,p_Entity_Type IN VARCHAR2
,p_Action_Type IN VARCHAR2
,x_Return_Status OUT NOCOPY VARCHAR2
,x_Msg_Count OUT NOCOPY NUMBER
,x_Msg_Data OUT NOCOPY VARCHAR2
)IS
PRAGMA AUTONOMOUS_TRANSACTION;
SELECT c.program_id, u.user_name, s.machine, s.terminal
FROM bsc_current_sessions c, v$session s, bsc_apps_users_v u
WHERE c.session_id = s.audsid
AND c.program_id IN (-100, -101, -200, -201, -700, -800, -802)
AND c.session_id <> USERENV('SESSIONID')
AND c.user_id = u.user_id (+);
SELECT session_id
FROM bsc_current_sessions
WHERE program_id IN (-100,-101,-200,-201,-202,-700,-800, -802);
DELETE BSC_CURRENT_SESSIONS
WHERE SESSION_ID NOT IN
(SELECT VS.AUDSID
FROM V$SESSION VS);
DELETE BSC_CURRENT_SESSIONS
WHERE ICX_SESSION_ID IN (
SELECT SESSION_ID
FROM ICX_SESSIONS
WHERE (FND_SESSION_MANAGEMENT.CHECK_SESSION(SESSION_ID,NULL,NULL,'N') <> 'VALID'));
3.Even if it finds the records then it will delete the records only
for the above programs instead of taking all the programs for which
concurrent programs are not run.
This will again imporve the performance
/**************************************/
FOR cd IN c_sessions LOOP
IF(l_session_ids IS NULL ) THEN
l_session_ids :=cd.session_id;
l_sql := ' DELETE bsc_current_sessions'||
' WHERE session_id IN '||
' ( '||
' SELECT oracle_session_id '||
' FROM fnd_concurrent_requests '||
' WHERE program_application_id =271 '||
' AND oracle_session_id IN ('||l_session_ids ||' )'||
' AND phase_code=''C'')';
DELETE BSC_CURRENT_SESSIONS
WHERE SESSION_ID IN (
SELECT VS.AUDSID
FROM V$SESSION VS
WHERE VS.STATUS = 'KILLED');
IF(p_Entity_Name = bsc_utility.c_CALENDAR AND p_Action_Type = bsc_utility.c_UPDATE) THEN
raise_lock_error
( p_Program_id => cd.program_id
, p_User_Name => cd.user_name
, p_Machine => cd.machine
, p_Terminal => cd.terminal
);
INSERT INTO BSC_CURRENT_SESSIONS (
SESSION_ID,
PROGRAM_ID,
CREATED_BY,
CREATION_DATE,
LAST_UPDATED_BY,
LAST_UPDATE_DATE,
LAST_UPDATE_LOGIN,
USER_ID,
ICX_SESSION_ID
) VALUES
(
USERENV('SESSIONID'),
-400,
FND_GLOBAL.USER_ID,
SYSDATE,
FND_GLOBAL.USER_ID,
SYSDATE,
FND_GLOBAL.USER_ID,
FND_GLOBAL.USER_ID,
USERENV('SESSIONID')
);
DELETE FROM bsc_current_sessions
WHERE session_id = USERENV('SESSIONID')
AND program_id = -400;
SELECT PERIODICITY_ID
FROM BSC_SYS_PERIODICITIES
WHERE CALENDAR_ID = p_Calendar_Id;
SAVEPOINT LockUpdateCalendarPUB;
ROLLBACK TO LockUpdateCalendarPUB;
ROLLBACK TO LockUpdateCalendarPUB;
ROLLBACK TO LockUpdateCalendarPUB;
ROLLBACK TO LockUpdateCalendarPUB;