364: IS
365: l_stmt VARCHAR2(4000);
366: l_cursor INTEGER;
367: l_count INTEGER;
368: l_tab_mobile_user_id dbms_sql.Number_Table;
369: l_tab_access_id dbms_sql.Number_Table;
370: l_pk1_value VARCHAR2(4000);
371: l_pk2_value VARCHAR2(4000);
372: l_pk3_value VARCHAR2(4000);
365: l_stmt VARCHAR2(4000);
366: l_cursor INTEGER;
367: l_count INTEGER;
368: l_tab_mobile_user_id dbms_sql.Number_Table;
369: l_tab_access_id dbms_sql.Number_Table;
370: l_pk1_value VARCHAR2(4000);
371: l_pk2_value VARCHAR2(4000);
372: l_pk3_value VARCHAR2(4000);
373: l_pk1_string VARCHAR2(4000);
421: l_stmt := l_stmt ||' AND ' || p_pk3_name || ' = ' || l_pk3_string;
422: END IF;
423: END IF;
424:
425: l_cursor := dbms_sql.open_cursor;
426:
427: /*** was user_id provided? ***/
428: IF l_user_id IS NOT NULL THEN
429: /*** yes -> add p_operator filter on mobile_user_id to WHERE clause ***/
427: /*** was user_id provided? ***/
428: IF l_user_id IS NOT NULL THEN
429: /*** yes -> add p_operator filter on mobile_user_id to WHERE clause ***/
430: l_stmt := l_stmt || ' AND USER_ID ' || p_operator || ' :P4 ';
431: dbms_sql.parse( l_cursor, l_stmt, dbms_sql.v7);
432: dbms_sql.bind_variable( l_cursor, 'P4', l_user_id );
433: ELSE
434: /*** no -> delete all ACC records ***/
435: dbms_sql.parse( l_cursor, l_stmt, dbms_sql.v7);
428: IF l_user_id IS NOT NULL THEN
429: /*** yes -> add p_operator filter on mobile_user_id to WHERE clause ***/
430: l_stmt := l_stmt || ' AND USER_ID ' || p_operator || ' :P4 ';
431: dbms_sql.parse( l_cursor, l_stmt, dbms_sql.v7);
432: dbms_sql.bind_variable( l_cursor, 'P4', l_user_id );
433: ELSE
434: /*** no -> delete all ACC records ***/
435: dbms_sql.parse( l_cursor, l_stmt, dbms_sql.v7);
436: END IF;
431: dbms_sql.parse( l_cursor, l_stmt, dbms_sql.v7);
432: dbms_sql.bind_variable( l_cursor, 'P4', l_user_id );
433: ELSE
434: /*** no -> delete all ACC records ***/
435: dbms_sql.parse( l_cursor, l_stmt, dbms_sql.v7);
436: END IF;
437:
438: dbms_sql.bind_variable( l_cursor, 'P1', l_pk1_value );
439: IF p_pk2_name IS NOT NULL THEN
434: /*** no -> delete all ACC records ***/
435: dbms_sql.parse( l_cursor, l_stmt, dbms_sql.v7);
436: END IF;
437:
438: dbms_sql.bind_variable( l_cursor, 'P1', l_pk1_value );
439: IF p_pk2_name IS NOT NULL THEN
440: dbms_sql.bind_variable( l_cursor, 'P2', l_pk2_value );
441: IF p_pk3_name IS NOT NULL THEN
442: dbms_sql.bind_variable( l_cursor, 'P3', l_pk3_value );
436: END IF;
437:
438: dbms_sql.bind_variable( l_cursor, 'P1', l_pk1_value );
439: IF p_pk2_name IS NOT NULL THEN
440: dbms_sql.bind_variable( l_cursor, 'P2', l_pk2_value );
441: IF p_pk3_name IS NOT NULL THEN
442: dbms_sql.bind_variable( l_cursor, 'P3', l_pk3_value );
443: END IF;
444: END IF;
438: dbms_sql.bind_variable( l_cursor, 'P1', l_pk1_value );
439: IF p_pk2_name IS NOT NULL THEN
440: dbms_sql.bind_variable( l_cursor, 'P2', l_pk2_value );
441: IF p_pk3_name IS NOT NULL THEN
442: dbms_sql.bind_variable( l_cursor, 'P3', l_pk3_value );
443: END IF;
444: END IF;
445:
446: l_index := 1;
443: END IF;
444: END IF;
445:
446: l_index := 1;
447: dbms_sql.define_array( l_cursor, 1, l_tab_mobile_user_id, 10, l_index);
448: dbms_sql.define_array( l_cursor, 2, l_tab_access_id, 10, l_index);
449:
450:
451: CSM_UTIL_PKG.LOG( 'executing:' || l_stmt || fnd_global.local_chr(10) ||
444: END IF;
445:
446: l_index := 1;
447: dbms_sql.define_array( l_cursor, 1, l_tab_mobile_user_id, 10, l_index);
448: dbms_sql.define_array( l_cursor, 2, l_tab_access_id, 10, l_index);
449:
450:
451: CSM_UTIL_PKG.LOG( 'executing:' || l_stmt || fnd_global.local_chr(10) ||
452: ':P1 = ' || l_pk1_value || fnd_global.local_chr(10) ||
454: ':P3 = ' || l_pk3_value || fnd_global.local_chr(10) ||
455: ':P4 = ' || l_user_id, 'CSM_ACC_PKG.DELETE_ACC',FND_LOG.LEVEL_PROCEDURE);
456:
457:
458: l_count := dbms_sql.execute( l_cursor );
459: LOOP
460: l_count := dbms_sql.fetch_rows(l_cursor);
461:
462: dbms_sql.column_value( l_cursor, '1', l_tab_mobile_user_id);
456:
457:
458: l_count := dbms_sql.execute( l_cursor );
459: LOOP
460: l_count := dbms_sql.fetch_rows(l_cursor);
461:
462: dbms_sql.column_value( l_cursor, '1', l_tab_mobile_user_id);
463: dbms_sql.column_value( l_cursor, '2', l_tab_access_id);
464:
458: l_count := dbms_sql.execute( l_cursor );
459: LOOP
460: l_count := dbms_sql.fetch_rows(l_cursor);
461:
462: dbms_sql.column_value( l_cursor, '1', l_tab_mobile_user_id);
463: dbms_sql.column_value( l_cursor, '2', l_tab_access_id);
464:
465: EXIT WHEN l_count <> 10;
466: END LOOP;
459: LOOP
460: l_count := dbms_sql.fetch_rows(l_cursor);
461:
462: dbms_sql.column_value( l_cursor, '1', l_tab_mobile_user_id);
463: dbms_sql.column_value( l_cursor, '2', l_tab_access_id);
464:
465: EXIT WHEN l_count <> 10;
466: END LOOP;
467: dbms_sql.close_cursor( l_cursor );
463: dbms_sql.column_value( l_cursor, '2', l_tab_access_id);
464:
465: EXIT WHEN l_count <> 10;
466: END LOOP;
467: dbms_sql.close_cursor( l_cursor );
468:
469: /*** were any records deleted? ***/
470: IF l_tab_mobile_user_id.COUNT > 0 THEN
471: /*** yes -> loop over arrays containing mobile_user_id and access_id and notify oLite ***/
546: END IF;
547:
548: EXCEPTION WHEN OTHERS THEN
549: IF l_cursor <> 0 THEN
550: dbms_sql.close_cursor( l_cursor );
551: END IF;
552: CSM_UTIL_PKG.LOG( 'Exception occurred in CSM_ACC_PKG.DELETE_ACC' || sqlerrm, 'CSM_ACC_PKG.DELETE_ACC',FND_LOG.LEVEL_EXCEPTION);
553: /*** Raise any other error ***/
554: RAISE;