cancel
Showing results for 
Search instead for 
Did you mean: 

How To use LOAD TABLE in an ATOMIC Compound Statement

thomas_duemesnil
Participant
2,322

I try to load data of a client file into a local temporary table. I try to put all my procedure/function code if possible in an ATOMIC Block. The sample below works without the ATOMIC

BEGIN ATOMIC
    declare local temporary table tmpRSTDOMAIN 
          ( RSTDOMAIN_KDNR integer null ) ON COMMIT PRESERVE ROWS;
    load table tmpRSTDOMAIN( RSTDOMAIN_KDNR ) 
          using client file 'c:\\\\loadTableTest.csv' 
          delimited   by ';' defaults on;
    select * from tmpRSTDOMAIN;
END;

The File is only for testing

1
2
3
4

ASA Version is 11.0.1.2506

The Documentation http://dcx.sybase.com/index.html#1101en/dbreference_en11/load-table-statement.html*d5e42427 states that under Remarks that

For base tables and global temporary tables, a commit is performed. For local temporary tables, a commit is not performed

Do not use the LOAD TABLE statement on a temporary table for which ON COMMIT DELETE ROWS was specified, either explicitly or by default, at creation time. However, you can use LOAD TABLE if ON COMMIT PRESERVE ROWS or NOT TRANSACTIONAL was specified.

I get an ERROR that no commit/rollback is allowed inside a atomic statement. SQLCODE -267

Any ideas ? Documentation flaw ?

Accepted Solutions (1)

Accepted Solutions (1)

Former Member

This is a documentation error. LOAD TABLE causes a commit when loading into a temporary table as of the fix for QTS 454858. I will inform the doc team.

VolkerBarth
Contributor
0 Kudos

@Bruce: I had suspected an interference with a CHECKPOINT as done by LOAD TABLE. Is a CHECKPOINT valid inside an ATOMIC block? (According to the docs, it seems so - at least I haven't found a contrary statement.)

Former Member

I don't think there is a restriction against checkpoints within atomic blocks; however, statements such as LOAD TABLE and ALTER TABLE that cause checkpoints as side effects also cause commits.

Answers (0)