interaction between ALTER SESSION and autonomous transactions. : Session variable « SQL Plus « Oracle PL / SQL






interaction between ALTER SESSION and autonomous transactions.

    
SQL>
SQL>
SQL> CREATE TABLE MyTable (
  2    num_col    NUMBER,
  3    char_col   VARCHAR2(60)
  4    );

Table created.

SQL>
SQL> CREATE OR REPLACE PROCEDURE InsertDate1(p_Msg IN VARCHAR2) AS
  2    PRAGMA AUTONOMOUS_TRANSACTION;
  3  BEGIN
  4    INSERT INTO MyTable(num_col, char_col)
  5      VALUES (400, p_Msg || ': ' || SYSDATE);
  6    COMMIT;
  7  END InsertDate1;
  8  /

Procedure created.

SQL> show errors
No errors.
SQL>
SQL> CREATE OR REPLACE PROCEDURE InsertDate2(p_Msg IN VARCHAR2) AS
  2    PRAGMA AUTONOMOUS_TRANSACTION;
  3  BEGIN
  4    EXECUTE IMMEDIATE
  5      'ALTER SESSION SET NLS_DATE_FORMAT =
  6        ''MM/DD/YYYY HH24:MI:SS''';
  7
  8    INSERT INTO MyTable(num_col, char_col)
  9      VALUES (400, p_Msg || ': ' || SYSDATE);
 10    COMMIT;
 11  END InsertDate2;
 12  /

Procedure created.

SQL> show errors
No errors.
SQL>
SQL>
SQL> DELETE FROM MyTable;

0 rows deleted.

SQL>
SQL> ALTER SESSION SET NLS_DATE_FORMAT = 'DD-MON-YYYY HH24:MI:SS';

Session altered.

SQL>
SQL> BEGIN
  2    InsertDate1('First insert');
  3    InsertDate2('Second insert');
  4    InsertDate1('Third insert');
  5  END;
  6  /
BEGIN
*
ERROR at line 1:
ORA-00034: cannot COMMIT in current PL/SQL session
ORA-06512: at "JAVA2S.INSERTDATE1", line 6
ORA-06512: at line 2


SQL>
SQL> SELECT char_col
  2    FROM MyTable
  3    WHERE num_col = 400;

no rows selected

SQL>
SQL> ALTER SESSION DISABLE COMMIT IN PROCEDURE;

Session altered.

SQL>
SQL> BEGIN
  2    InsertDate1('With COMMIT IN PROCEDURE disabled');
  3    COMMIT;
  4  END;
  5  /
BEGIN
*
ERROR at line 1:
ORA-00034: cannot COMMIT in current PL/SQL session
ORA-06512: at "JAVA2S.INSERTDATE1", line 6
ORA-06512: at line 2


SQL>
SQL>
SQL> drop table MyTable;

Table dropped.

SQL>
SQL>

   
    
    
  








Related examples in the same category

1.alter the session with the ALTER SESSION statement and set the session's time zone forward
2.alter session set nls_date_format = 'dd-MON-yyyy hh24:mi:ss';
3.alter session set OPTIMIZER_MODE = RULE
4.Adjust your session time zone to -08:00, display the contents of your time table.
5.alter session set cursor_sharing = force
6.alter session set use_stored_outlines
7.Event-based call and exception tracing
8.event-based call and exception tracing.
9.SQL trace
10.uses dynamic SQL to issue an ALTER SESSION statement.
11.ALTER SESSION SET QUERY_REWRITE_ENABLED
12.alter session set sql_trace=true
13.sql_trace a stored procedure
14.Set the following session parameters to enable query rewrite:
15.If your session time zone is not US/Central (-06:00), alter your session to Central time:
16.alter session set nls_date_format = 'DD-MON-YYYY HH24:MI:SS'
17.Alter time_zone
18.sessiontimezone, current_timestamp
19.demonstrates the use of DBMS_SQL to execute an ALTER SESSION statement.
20.ALTER SESSION SET SQL_TRACE = TRUE
21.ALTER SESSION SET optimizer_dynamic_sampling
22.alter session set NLS_DATE_FORMAT='DD-MM-YYYY'
23.alter session set current_schema=Smart
24.alter session set db_file_multiblock_read_count
25.alter session set hash_area_size
26.alter session set nls_date_format='dd-mm-yyyy', nls_language=Dutch, nls_currency='Eur'
27.alter session set optimizer_index_cost_adj, alter session set optimizer_index_caching
28.alter session set optimizer_max_permutations=80000
29.alter session set optimizer_mode=all_rows
30.alter session set optimizer_mode=first_rows
31.alter session set query_rewrite_integrity=enforced
32.alter session set sort_area_size = 102400000
33.alter session set workarea_size_policy=manual
34.alter system flush shared_pool
35.alter system quiesce restricted
36.alter system resume
37.alter system suspend
38.set optimizer_features_enable = '8.1.5' scope = spfile
39.show filestat
40.show parameter optimizer_features
41.show verify
42.If your session time zone is not US/Central Standard Time (-06:00), alter your session to Central Standard time: