| **Navigation:**  SQL Drivers > Oracle >====== Oracle Accelerator Supported Commands and Attributes ====== | [[dll coding practices.htm|{{btn_prev_n.gif|Previous page}}]][[coming future.htm|{{btn_home_n.gif|Return to chapter overview}}]][[oracle accelerator data types.htm|{{btn_next_n.gif|Next page}}]] | | || | | **File Attributes** | **Supported** | | | CREATE | Y1 | | | DRIVER(//filetype// [,//driver string//]) | Y | | | NAME | Y | | | ENCRYPT | N | | | OWNER(//password//) | Y | | | RECLAIM | N | | | PRE(//prefix//) | Y | | | BINDABLE | Y | | | THREAD | Y | | | EXTERNAL(//member//) | Y | | | DLL([//flag//]) | Y | | | OEM | Y2 | | | **File Structures** | **Supported** | | | INDEX | Y | | | KEY | Y | | | MEMO | N | | | BLOB | Y | | | RECORD | Y | | | **Index, Key, Memo Attributes** | **Supported** | | | BINARY | N | | | DUP | Y | | | NOCASE | Y | | | OPT | Y | | | PRIMARY | Y | | | NAME | Y | | | Ascending Components | Y | | | Descending Components | Y | | | Mixed Components | Y | | | **Field Attributes** | **Supported** | | | DIM | N | | | OVER | Y | | | NAME | Y | | | **File Procedures** | **Supported** | | | BOF(//file//) | N | | | BUFFER(//file//) | Y | | | BUILD(//file//) | Y | | | BUILD(//key//) | Y | | | BUILD(//index//) | Y3 | | | BUILD(//index//,// components//) | Y3 | | | BUILD(//index//,// components//,// filter//) | N | | | BYTES(//file//) | Y10 | | | CLOSE(//file//) | Y | | | COPY(//file//,// new file//) | N | | | CREATE(//file//) | Y1 | | | DUPLICATE(//file//) | Y | | | DUPLICATE(//key//) | Y | | | EMPTY(//file//) | Y | | | EOF(//file//) | N | | | FLUSH(//file//) | N | | | LOCK(//file//) | N | | | NAME(//label//) | Y | | | OPEN(//file//,// access mode//) | Y | | | PACK(//file//) | N | | | POINTER(//file//) | N | | | POINTER(//key//) | N | | | POSITION(//file)// | Y14 | | | POSITION(//key)// | Y11 | | | RECORDS(//file//) | Y | | | RECORDS(//key//) | Y12 | | | REMOVE(//file//) | Y | | | RENAME(//file//,// new file//) | N | | | SEND(//file//,// message//) | Y | | | SHARE(//file//,// access mode//) | Y | | | STATUS(//file//) | Y | | | STREAM(//file//) | N | | | UNLOCK(//file//) | N | | | **Record Access** | **Supported** | | | ADD(//file//) | Y | | | ADD(//file//,// length//) | N | | | APPEND(//file//) | Y4 | | | APPEND(//file//,// length//) | N | | | DELETE(//file//) | Y | | | GET(//file//,//key)// | Y | | | GET(//file//,// filepointer//) | Y5 | | | GET(//file//,// filepointer//,// length//) | N | | | GET(//key//,// keypointer//) | N | | | HOLD(//file//) | Y6 | | | NEXT(//file//) | Y | | | NOMEMO(//file//) | N | | | PREVIOUS(//file//) | Y7 | | | PUT(//file//) | Y | | | PUT(//file//,// filepointer//) | N | | | PUT(//file//,// filepointer//, //length//) | N | | | RELEASE(//file//) | N | | | REGET(//file,string//) | Y8 | | | REGET(//key,string//) | Y8 | | | RESET(//file,string//) | N | | | RESET(//key,string//) | Y9 | | | SET(//file//) | Y | | | SET(//file//,// key//) | N | | | SET(//file//,// filepointer//) | N | | | SET(//key//) | Y | | | SET(//key//,// key//) | Y | | | SET(//key//,// keypointer//) | N | | | SET(//key//,// key//,// keypointer//) | N | | | SKIP(//file//,// count//) | Y | | | WATCH(//file//) | Y | | | **Transaction Processing** | **Supported** | | | LOGOUT(//timeout//,// file, ..., file//) | Y | | | COMMIT | Y | | | ROLLBACK | Y | | | **Null Data Processing** | **Supported** | | | NULL(//field//) | Y | | | SETNULL(//field//) | Y13 | | | SETNULL(//file,field//) | Y | | | SETNONNULL(//field//) | Y | **Notes** 1          CREATE(//file//) does not work for every data type. See //Supported Data Types// for more information. 2          Adding the OEM attribute causes the driver to generate calls to NLSSORT for string fields in a sort sequence (either key components or PROP:Order components). 3          The BUILD(//dynamic index//) and BUILD(//index//) statements do not perform any disk action. They only initialize internal Oracle driver structures to track key order access and allow SELECT statements to be built when you issue SET(key) or SET(key,key) statements referencing the //index//. 4          The APPEND statement behaves identically to the ADD statement, that is, keys //are //updated by the APPEND statement. 5          The GET(//file//, //filepointer//) statement is unsupported for all values of //filepointer// except //filepointer// = 0. In this case, the record position is cleared and ERRORCODE 35 is returned. 6          Apart from the holding records, the HOLD statement has another use. Normally, the driver will not reread the record when you execute a RESET/NEXT to the current record. Executing a HOLD statement before the RESET/NEXT forces the driver to reread the record from disk. 7          You can't execute a PREVIOUS after a SET(//file//) statement. You can only examine the //file// in a forward order. 8          The REGET statement only works if you have a unique key defined for the file 9          The RESET(//key,position//)/NEXT(//file//) statement sequence is optimized to retrieve the record from the driver's internal buffer if the code is resetting to the current record. To force the driver to reread the record from disk, execute a HOLD statement before the RESET/NEXT sequence. This optimization is not in effect within a transaction frame. 10        The BYTES(file) function returns the number of records in the file //or //the number of bytes in the last record accessed. Following an OPEN statement, the BYTES function returns the number of records in the //file//. After the file has been accessed by GET, NEXT, ADD, or PUT, the BYTES function returns the size of the last //record //accessed. 11        The POSITION(//key//) function returns (1 + size of the //key// components + the size of the components of the file's primary key). This formula is true even if the first unique key is the same //key// you are positioning on. If no primary key is defined, then the first unique key is considered the primary key. If there is no unique key, POSITION(//key//) returns 1 + size of the //key// components. In this case RESET(key) will reposition to the first occurrence of the key value, since there is no way of uniquely identifying a record. Therefore, the RESET may position on a different record. 12        The RECORDS(//key//) function returns the number of UNIQUE occurrences of the first element of the //key//. This is the same as doing an SQL statement of: **SELECT COUNT ( DISTINCT key_field1) FROM table** 13        SETNULL(field) clears the contents of the field. 14        The returned POSITION can only be used with REGET(file,position) and only for unique keys.