oracle数据类型
2016-03-04 15:08
555 查看
Oracle/PLSQL: Data Types
The following is a list of datatypes available in Oracle.//z 2012-08-01 13:48:57 is2120@csdn.T1290880757[T6,L73,R2,V39]
Character Datatypes
Data Type Syntax | Oracle 9i | Oracle 10g | Oracle 11g | Explanation (if applicable) |
---|---|---|---|---|
char(size) | Maximum size of 2000 bytes. | Maximum size of 2000 bytes. | Maximum size of 2000 bytes. | Where size is the number of characters to store. Fixed-length strings. Space padded. |
nchar(size) | Maximum size of 2000 bytes. | Maximum size of 2000 bytes. | Maximum size of 2000 bytes. | Where size is the number of characters to store. Fixed-length NLS string Space padded. |
nvarchar2(size) | Maximum size of 4000 bytes. | Maximum size of 4000 bytes. | Maximum size of 4000 bytes. | Where size is the number of characters to store. Variable-length NLS string. |
varchar2(size) | Maximum size of 4000 bytes. | Maximum size of 4000 bytes. | Maximum size of 4000 bytes. | Where size is the number of characters to store. Variable-length string. |
long | Maximum size of 2GB. | Maximum size of 2GB. | Maximum size of 2GB. | Variable-length strings. (backward compatible) |
raw | Maximum size of 2000 bytes. | Maximum size of 2000 bytes. | Maximum size of 2000 bytes. | Variable-length binary strings |
long raw | Maximum size of 2GB. | Maximum size of 2GB. | Maximum size of 2GB. | Variable-length binary strings. (backward compatible) |
Numeric Datatypes
Data Type Syntax | Oracle 9i | Oracle 10g | Oracle 11g | Explanation (if applicable) |
---|---|---|---|---|
number(p,s) | Precision can range from 1 to 38. Scale can range from -84 to 127. | Precision can range from 1 to 38. Scale can range from -84 to 127. | Precision can range from 1 to 38. Scale can range from -84 to 127. | Where p is the precision and s is the scale. For example, number(7,2) is a number that has 5 digits before the decimal and 2 digits after the decimal. |
numeric(p,s) | Precision can range from 1 to 38. | Precision can range from 1 to 38. | Precision can range from 1 to 38. | Where p is the precision and s is the scale. For example, numeric(7,2) is a number that has 5 digits before the decimal and 2 digits after the decimal. |
float | ||||
dec(p,s) | Precision can range from 1 to 38. | Precision can range from 1 to 38. | Precision can range from 1 to 38. | Where p is the precision and s is the scale. For example, dec(3,1) is a number that has 2 digits before the decimal and 1 digit after the decimal. |
decimal(p,s) | Precision can range from 1 to 38. | Precision can range from 1 to 38. | Precision can range from 1 to 38. | Where p is the precision and s is the scale. For example, decimal(3,1) is a number that has 2 digits before the decimal and 1 digit after the decimal. |
integer | ||||
int | ||||
smallint | ||||
real | ||||
double precision |
Date/Time Datatypes
Data Type Syntax | Oracle 9i | Oracle 10g | Oracle 11g | Explanation (if applicable) |
---|---|---|---|---|
date | A date between Jan 1, 4712 BC and Dec 31, 9999 AD. | A date between Jan 1, 4712 BC and Dec 31, 9999 AD. | A date between Jan 1, 4712 BC and Dec 31, 9999 AD. | |
timestamp (fractional seconds precision) | fractional seconds precisionmust be a number between 0 and 9. (default is 6) | fractional seconds precisionmust be a number between 0 and 9. (default is 6) | fractional seconds precisionmust be a number between 0 and 9. (default is 6) | Includes year, month, day, hour, minute, and seconds. For example: timestamp(6) |
timestamp (fractional seconds precision) with time zone | fractional seconds precisionmust be a number between 0 and 9. (default is 6) | fractional seconds precisionmust be a number between 0 and 9. (default is 6) | fractional seconds precisionmust be a number between 0 and 9. (default is 6) | Includes year, month, day, hour, minute, and seconds; with a time zone displacement value. For example: timestamp(5) with time zone |
timestamp (fractional seconds precision) with local time zone | fractional seconds precisionmust be a number between 0 and 9. (default is 6) | fractional seconds precisionmust be a number between 0 and 9. (default is 6) | fractional seconds precisionmust be a number between 0 and 9. (default is 6) | Includes year, month, day, hour, minute, and seconds; with a time zone expressed as the session time zone. For example: timestamp(4) with local time zone |
interval year (year precision) to month | year precision is the number of digits in the year. (default is 2) | year precision is the number of digits in the year. (default is 2) | year precision is the number of digits in the year. (default is 2) | Time period stored in years and months. For example: interval year(4) to month |
interval day (day precision) to second (fractional seconds precision) | day precisionmust be a number between 0 and 9. (default is 2) fractional seconds precisionmust be a number between 0 and 9. (default is 6) | day precisionmust be a number between 0 and 9. (default is 2) fractional seconds precisionmust be a number between 0 and 9. (default is 6) | day precisionmust be a number between 0 and 9. (default is 2) fractional seconds precisionmust be a number between 0 and 9. (default is 6) | Time period stored in days, hours, minutes, and seconds. For example: interval day(2) to second(6) |
Large Object (LOB) Datatypes
Data Type Syntax | Oracle 9i | Oracle 10g | Oracle 11g | Explanation (if applicable) |
---|---|---|---|---|
bfile | Maximum file size of 4GB. | Maximum file size of 232-1 bytes. | Maximum file size of 264-1 bytes. | File locators that point to a binary file on the server file system (outside the database). |
blob | Store up to 4GB of binary data. | Store up to (4 gigabytes -1) * (the value of the CHUNK parameter of LOB storage). | Store up to (4 gigabytes -1) * (the value of the CHUNK parameter of LOB storage). | Stores unstructured binary large objects. |
clob | Store up to 4GB of character data. | Store up to (4 gigabytes -1) * (the value of the CHUNK parameter of LOB storage) of character data. | Store up to (4 gigabytes -1) * (the value of the CHUNK parameter of LOB storage) of character data. | Stores single-byte and multi-byte character data. |
nclob | Store up to 4GB of character text data. | Store up to (4 gigabytes -1) * (the value of the CHUNK parameter of LOB storage) of character text data. | Store up to (4 gigabytes -1) * (the value of the CHUNK parameter of LOB storage) of character text data. | Stores unicode data. |
Rowid Datatypes
Data Type Syntax | Oracle 9i | Oracle 10g | Oracle 11g | Explanation (if applicable) |
---|---|---|---|---|
rowid | The format of the rowid is: BBBBBBB.RRRR.FFFFF Where BBBBBBB is the block in the database file; RRRR is the row in the block; FFFFF is the database file. | The format of the rowid is: BBBBBBB.RRRR.FFFFF Where BBBBBBB is the block in the database file; RRRR is the row in the block; FFFFF is the database file. | The format of the rowid is: BBBBBBB.RRRR.FFFFF Where BBBBBBB is the block in the database file; RRRR is the row in the block; FFFFF is the database file. | Fixed-length binary data. Every record in the database has a physical address orrowid. |
urowid(size) | Universal rowid. Where size is optional. |
1 Data Types
A data type defines a set of values. A reference to a data type specifies the set of values that can occur in a given context. A data type is associated with each value retrievedfrom a table or computed in an expression and each constant.
TimesTen follows the ODBC standard for type conversion. For more information, refer to ODBC API reference documentation, which is available from Microsoft or a variety of third parties. The following site contains Microsoft's ODBC API reference documentation:
http://msdn.microsoft.com/en-us/library/ms714562(VS.85).aspx
If you are using IMDB Cache, see "Mappings between Oracle and TimesTen data types" in Oracle
In-Memory Database Cache User's Guide. This section compares valid data types for creating cache group columns, as well as type conversions for passthrough queries.
The following subjects describe data types in TimesTen:
Type specifications
ANSI SQL data types
Types supported for backward compatibility in Oracle type mode
TimesTen type mapping
Character data types
Numeric data types
BINARY and VARBINARY data types
Numeric precedence
LOB data types
ROWID data type
Datetime data types
TimesTen intervals
Storage requirements
Data type comparison rules
Data type conversion
Null values
INF and NAN
Overflow and truncation
Underflow
Replication limits
TimesTen type mode (backward compatibility)
Type specifications
TimesTen supports the data types in Table 1-1 in the default Oracle type mode.Type mode is a data store attribute, where
TypeMode=0indicates Oracle type mode and
TypeMode=1indicates TimesTen mode. For more information on data type modes, see "TimesTen
type mode (backward compatibility)" and "TypeMode" inOracle
TimesTen In-Memory Database Reference.
Table 1-1 Data types supported in Oracle type mode
Data type | Description |
---|---|
BINARY ( n ) | Fixed-length binary value of nbytes. Legal values for nrange from 1 to 8300. BINARYdata is padded to the maximum column size with trailing zeroes. Alternatively, specify TT_BINARY ( n ). For more details, see "BINARY and VARBINARY data types". |
BINARY_DOUBLE | A 64-bit floating-point number. BINARY_DOUBLEis a double-precision native floating point number that supports +Inf, -Inf, and NaNvalues. BINARY_DOUBLEis an approximate numeric value consisting of an exponent and mantissa. You can use exponential or E-notation. BINARY_DOUBLEhas binary precision 53. Minimum positive finite value: 2.22507485850720E-308 Maximum positive finite value: 1.79769313486231E+308 For more details, see "BINARY_DOUBLE". |
BINARY_FLOAT | A 32-bit floating-point number. BINARY_FLOATis a single-precision native floating-point type that supports +Inf, -Inf, and NaNvalues. BINARY_FLOATis an approximate numeric value consisting of an exponent and mantissa. You can use exponential or E-notation. BINARY_FLOAThas binary precision 24. Minimum positive finite value: 1.17549E-38F Maximum positive finite value: 3.40282E+38F For more details, see "BINARY_FLOAT". |
BLOB | A binary large object. Variable-length binary value with a maximum size of 16 MB. For more details, see "BLOB". |
CHAR [ACTER][( n [BYTE|CHAR])] | Fixed-length character string of length nbytes or characters. Default is one byte. BYTEindicates that the column has byte-length semantics. Legal values for nrange from a minimum of one byte to a maximum of 8300 bytes. CHARindicates that the column has character-length semantics. The minimum CHARlength is one character. The maximum CHARlength depends on how many characters fit in 8300 bytes. This is determined by the database character set in use. For character set AL32UTF8, up to four bytes per character may be needed, so the CHARlength limit ranges from 2075 to 8300 depending on the character set. A zero-length string is interpreted as NULL. CHARdata is padded to the maximum column size with trailing blanks. Blank-padded comparison semantics are used. Alternatively, specify ORA_CHAR[( n [BYTE|CHAR])]. For more details, see "CHAR". |
CLOB | A character large object containing single-byte or multibyte characters. Variable-length large object with a maximum size of 4 MB. For more details, see "CLOB". |
DATE | Stores date and time information: century, year, month, day, hour, minute, and second. Format is:YYYY-MM-DD HHMMSS. Valid date range is from January 1, 4712 BC to December 31, 9999 AD. There are no fractional seconds. Alternatively, specify ORA_ DATE. For more details, see "DATE". |
INTERVAL [+/-] IntervalQualifier | TimesTen partially supports interval types, expressed with the type INTERVALand an IntervalQualifier. An IntervalQualifiercan only specify a single field type with no precision. The default leading precision is eight digits for all interval types. The single field type can be: year, month, day, hour, minute, or second. Currently, interval types can be specified only with a constant. Note: You cannot specify a column of an interval type. These are non-persistent types used in SQL expressions at runtime. In addition, for those comparisons where an interval data type is returned, the interval data type cannot be the final result of a complete expression. The EXTRACTfunction must be used to extract the desired component of this interval result. For more details, see "TimesTen intervals". |
NCHAR [( n ) ] | Fixed-length string of ntwo-byte Unicode characters. The number of bytes required is 2* nwhere nis the specified number of characters. NCHARcharacter limits are half the byte limits so the maximum size is 4150. A zero-length string is interpreted as NULL. NCHARdata is padded to the maximum column size with U+0020 SPACE. Blank-padded comparison semantics are used. Alternatively, specify ORA_NCHAR[( n )]. For more details, see "NCHAR". |
NCLOB | A national character large object containing Unicode characters. Variable-length character value with a maximum size of 4 MB. For more details, see "NCLOB". |
NUMBER[( p [, s ])] | Number having precision and scale. The precision ranges from 1 to 38 decimal. The scale ranges from -84 to 127. Both precision and scale are optional. If you do not specify a precision or a scale, TimesTen assumes the maximum precision of 38 and flexible scale. NUMBERsupports negative scale and scale greater than precision. NUMBERstores zero as well as positive and negative fixed numbers with absolute values from 1.0 x 10-130 to (but not including) 1.0 x 10126. If you specify an arithmetic expression whose value has an absolute value greater than or equal to 1.0 x 10126, then TimesTen returns an error. For more details, see "NUMBER". |
NVARCHAR2( n ) | Variable-length string of ntwo-byte Unicode characters. The number of bytes required is 2* nwhere nis the specified number of characters. NVARCHAR2character limits are half the byte limits so the maximum size is 2,097,152 (221). You must specify n. A zero-length string is interpreted as NULL. Nonpadded comparison semantics are used. Alternatively, specify ORA_NVARCHAR2( n ). For more details, see "NVARCHAR2". |
ROWID | An 18-byte character string that represents the address of a table row or materialized view row. Specify a literal ROWIDvalue as a CHARconstant enclosed in single quotes. For more details, see "ROWID data type". |
TIME | A time of day between 00:00:00 (midnight) and 23:59:59 (11:59:59 pm), inclusive. The format is:HH:MI:SS. Alternatively, specify TT_TIME. For more details, see "TIME". |
TIMESTAMP [( fractional_seconds_precision )] | Stores year, month, and day values of the date plus hour, minute, and second values of the time. Thefractional_seconds_precisionis the number of digits in the fractional part of the seconds field. Valid date range is from January 1, 4712 BC to December 31, 9999 AD. TT_TIMESTAMPhas a smaller storage size than TIMESTAMP. TT_TIMESTAMPis faster than TIMESTAMPbecause TT_TIMESTAMPis an eight-byte integer containing the number of microseconds since January 1, 1754. Comparisons are very fast. TIMESTAMPhas a larger range than TT_TIMESTAMPin that TIMESTAMPcan store date and time data as far back as 4712 BC. TIMESTAMPalso supports up to nine digits of fractional second precision whereas TT_TIMESTAMPsupports six digits of fractional second precision. The fractional seconds precision range is 0 to 9. The default is 6. Format is: YYYY-MM-DD HH:MI:SS [.FFFFFFFFF] Alternatively, specify ORA_TIMESTAMP[( fractional_seconds_precision )] For more details, see "TIMESTAMP". |
TT_BIGINT | A signed eight-byte integer in the following range: -9,223,372,036,854,775,808 (-263) to 9,223,372,036,854,775,807 (263-1). Use TT_BIGINTrather than the NUMBERdata type. TT_BIGINTis more compact and offers faster performance than the NUMBERtype. If you need to store greater than 19-digit integers, use NUMBER ( p )where p> 19. For more details, see "TT_BIGINT". |
TT_DATE | Stores date information: century, year, month, and day. The format is YYYY-MM-DD, where MMis expressed as an integer such as 2006-10-28. Valid dates are between 1753-01-01 (January 1, 1753) and 9999-12-31 (December 31, 9999). For more details, see "TT_DATE". |
TT_INTEGER | A signed integer in the range -2,147,483,648 (-231) to 2,147,483,647 (231-1).TT_INTEGERis a native signed integer data type. Use TT_INTEGERrather than INTEGER. INTEGERmaps to the NUMBERdata type. TT_INTEGERis more compact and offers faster performance than the NUMBERtype. If you need to store greater than 19-digit integers, use NUMBER ( p )where p> 19. For more details, see "TT_INTEGER". |
TT_SMALLINT | A native signed 16-bit integer in the range -32,768 (-215) to 32,767 (215-1). Use TT_SMALLINTrather than SMALLINT. SMALLINTmaps to the NUMBERdata type. TT_SMALLINTis more compact and offers faster performance than the NUMBERtype. If you need to store greater than 19-digit integers, use NUMBER ( p )where p> 19. For more details, see "TT_SMALLINT". |
TT_TIMESTAMP | A date and time between 1753-01-01 00:00:00 (midnight on January 1, 1753) and 9999-12-31 23:59:59 pm (11:59:59 pm on December 31, 9999), inclusive. Any values for the fraction not specified in full microseconds result in a "Data Truncated" error. The format is YYYY-MM-DD HH:MI:SS [.FFFFFFFFF]. TT_TIMESTAMPhas a smaller storage size than TIMESTAMPand is faster than TIMESTAMPbecause TT_TIMESTAMPis an eight-byte integer containing the number of microseconds since January 1, 1754. Comparisons are very fast. TIMESTAMPhas a larger range than TT_TIMESTAMPin that TIMESTAMPcan store date and time data as far back as 4712 BC. TIMESTAMPalso supports up to nine digits of fractional second precision whereas TT_TIMESTAMPsupports six digits of fractional second precision. You can specify TT_TIMESTAMP(6). For more details, see "TT_TIMESTAMP". |
TT_TINYINT | Unsigned integer ranging from 0 to 255 (28-1). Use TT_TINYINTrather than the NUMBERdata type. TT_TINYINTis more compact and offers faster performance than the NUMBERtype. If you need to store greater than 19-digit integers, use NUMBER( p )where p> 19. Since TT_TINYINTis unsigned, the negation of a TT_TINYINTis a TT_SMALLINT. For more details, see "TT_TINYINT". |
VARBINARY ( n ) | Variable-length binary value having maximum length nbytes. Legal values for nrange from 1 to 4194304 (222). Alternatively, specify TT_VARBINARY( n ). For more details, see "BINARY and VARBINARY data types". |
VARCHAR[2]( n [BYTE|CHAR]) | Variable-length character string having maximum length nbytes or characters. BYTEindicates that the column has byte-length semantics. Legal values for nrange from a minimum of one byte to a maximum 4194304 (222) bytes. You must specify n. CHARindicates that the column has character-length semantics. A zero-length string is interpreted as NULL. Nonpadded comparison semantics are used. Do not use the VARCHARtype. Although it is currently synonymous with VARCHAR2, the VARCHARtype is scheduled to be redefined. Alternatively, specify ORA_VARCHAR2( n [BYTE|CHAR]). For more details, see "VARCHAR2". |
ANSI SQL data types
TimesTen supports ANSI SQL data types in Oracle type mode. These data types are converted to TimesTen data types with data stored as TimesTen data types.Table1-2 shows how the ANSI SQL data types are mapped to TimesTen data types.
Table 1-2
Data type mapping: ANSI SQL to TImesTen
ANSI SQL data type | TimesTen data type |
---|---|
CHARACTER VARYING( n [BYTE|CHAR])or CHAR VARYING( n [BYTE|CHAR]) | VARCHAR2( n [BYTE|CHAR]) Character semantics is supported. |
DOUBLE [PRECISION] | NUMBER Floating-point number with a binary precision of 126. Alternatively, specify FLOAT(126)or ORA_FLOAT(126). |
FLOAT[( b )] | NUMBER Floating-point number with binary precision b. Acceptable values for bare between 1 and 126 (binary digits). FLOATis an exact numeric type. Use FLOATto define a column with a floated scale and a specified precision. A floated scale is supported with the NUMBERtype, but you cannot specify the precision. A lower precision requires less space, so because you can specify a precision with FLOAT, it may be more desirable than NUMBER. If you do not specify b, then the default precision is 126 binary (38 decimal). BINARY_FLOATand BINARY_DOUBLEare inexact numeric types and are therefore different floating types than FLOAT. In addition, the semantics are different between FLOATand BINARY_FLOAT/ BINARY_DOUBLEbecause BINARY_FLOATand BINARY_DOUBLEconform to the IEEE standard. Internally, FLOATis implemented as type NUMBER. Alternatively, specify ORA_FLOAT. For example: FLOAT(24) = ORA_FLOAT(24) FLOAT(53) = ORA_FLOAT(53) FLOAT( n ) = ORA_FLOAT( n ) |
INT[EGER] | NUMBER (38,0) TT_INTEGERis a native 32-bit integer type. Use TT_INTEGER, as this data type is more compact and offers faster performance than the NUMBERtype. |
NATIONAL CHARACTER( n )or NATIONAL CHAR ( n ) | NCHAR( n ) |
NATIONAL CHARACTER VARYING( n )or NATIONAL CHAR VARYING( n )or NCHAR VARYING( n ) | NVARCHAR2( n ) |
NUMERIC [( p [, s ])]or DEC[IMAL][( p [, s ])] | NUMBER( p,s ) Specifies a fixed-point number with precision pand scale s.This can only be used for fixed-point numbers. If no scale is specified, sdefaults to 0. |
REAL | NUMBER Floating-point number with a binary precision of 63. Alternatively, specify ORA_FLOAT(63)or FLOAT(63). |
SMALLINT | NUMBER(38,0) TT_SMALLINTis a native signed integer data type. Using TT_SMALLINTis more compact and offers faster performance than the NUMBERtype. |
Types supported for backward compatibility in Oracle type mode
TimesTen supports the data types shown in Table 1-3 for backward compatibility in Oracle type mode.Table
1-3 Data types supported for backward compatibility in Oracle type mode
Data type | Description |
---|---|
TT_CHAR[( n [BYTE|CHAR])] | Fixed-length character string of length nbytes or characters. Default is one byte. BYTEindicates that the column has byte-length semantics. Legal values for nrange from a minimum of one byte to a maximum 8300 bytes. CHARindicates that the column has character-length semantics. The minimum CHARlength is one character. The maximum CHARlength depends on how many characters fit in 8300 bytes. This is determined by the database character set in use. For character set AL32UTF8, up to four bytes per character may be needed, so the CHARlength limit ranges from 2075 to 8300 depending on the character set. If you insert a zero-length (empty) string into a column, the SQL NULLvalue is inserted. This is true in Oracle type mode only. TT_CHARdata is padded to the maximum column size with trailing blanks. Blank-padded comparison semantics are used. |
TT_DECIMAL[( p [, s ])] | An exact numeric value with a fixed maximum precision (total number of digits) and scale (number of digits to the right of the decimal point). The precisionpmust be between 1 and 40. The scale smust be between 0 and p. The default precision is 40 and the default scale is 0. Use the NUMBERdata type, which offers better performance, rather than TT_DECIMAL. |
TT_NCHAR[( n )] | Fixed-length string of ntwo-byte Unicode characters. The number of bytes required is 2* nwhere nis the specified number of characters. NCHARcharacter limits are half the byte limits so the maximum size is 4150. If you insert a zero-length (empty) string into a column, the SQL NULLvalue is inserted. This is true in Oracle type mode only. TT_NCHARdata is padded to the maximum column size with U+0020 SPACE. Blank-padded comparison semantics are used. |
TT_NVARCHAR( n ) | Variable-length string of ntwo-byte Unicode characters. The number of bytes required is 2* nwhere n is the specified number of characters. TT_NVARCHARcharacter limits are half the byte limits so the maximum size is 2,097,152 (221). You must specify n. If you insert a zero-length (empty) string into a column, the SQL NULLvalue is inserted. This is true in Oracle type mode only. Blank-padded comparison semantics are used. |
TT_VARCHAR( n [BYTE|CHAR]) | Variable-length character string having maximum length nbytes or characters. You must specify n. BYTEindicates that the column has byte-length semantics. Legal values for nrange from a minimum of 1 byte to a maximum 4194304 (222) bytes. CHARindicates that the column has character-length semantics. If you insert a zero-length (empty) string into a column, the SQL NULLvalue is inserted. This is true in Oracle type mode only. Blank-padded comparison semantics are used. |
TimesTen data type | TimesTen data type in Oracle type mode |
---|---|
BIGINT | TT_BIGINT In Oracle type mode, specify TT_BIGINT. For more information on TT_BIGINT, see "Type specifications". |
BINARY( n ) | BINARY( n ) In Oracle type mode, the data type has the same name. For more information on BINARY( n ), see"Type specifications". |
CHAR[ACTER][( n )] | TT_CHAR[( n [BYTE|CHAR])] In Oracle type mode, specify TT_CHAR. Character semantics is supported. For more information on type TT_CHAR, see "Types supported for backward compatibility in Oracle type mode". |
DATE | TT_DATE In Oracle type mode, specify TT_DATE. For more information on TT_DATE, see "Type specifications". |
DEC[IMAL][( p [, s ])]or NUMERIC[( p [, s ])] | TT_DECIMAL[( p [, s ])] In Oracle type mode, specify TT_DECIMAL. For more information on TT_DECIMAL, see "Types supported for backward compatibility in Oracle type mode". |
DOUBLE [PRECISION]or FLOAT[(53)] | BINARY_DOUBLE In Oracle type mode, specify BINARY_DOUBLE. For more information on BINARY_DOUBLE, see "Type specifications". |
INT[EGER] | TT_INT[EGER] In Oracle type mode, specify TT_INTEGER. For more information on TT_INTEGER, see "Type specifications". |
INTERVAL IntervalQualifier | INTERVAL IntervalQualifier In Oracle type mode, the data type has the same name. For more information on interval types, see"Type specifications". |
NCHAR[( n )] | TT_NCHAR[( n )] In Oracle type mode, specify TT_CHAR. For more information on TT_NCHAR, see "Types supported for backward compatibility in Oracle type mode". |
NVARCHAR( n ) | TT_NVARCHAR( n ) In Oracle type mode, specify TT_NVARCHAR. For more information on TT_NVARCHAR, see "Types supported for backward compatibility in Oracle type mode". |
REALor FLOAT(24) | BINARY_FLOAT In Oracle type mode, specify BINARY_FLOAT. For more information on BINARY_FLOAT, see "Type specifications". |
SMALLINT | TT_SMALLINT In Oracle type mode, specify TT_SMALLINT. For more information on TT_SMALLINT, see "Type specifications". |
TIME | TIME In Oracle type mode, the data type has the same name. For more information on TIME, see "Type specifications". |
TIMESTAMP | TT_TIMESTAMP In Oracle type mode, specify TT_TIMESTAMP. For more information on TT_TIMESTAMP, see "Type specifications". |
TINYINT | TT_TINYINT In Oracle type mode, specify TT_TINYINT. For more information on TT_TINYINT, see "Type specifications". |
VARBINARY( n ) | VARBINARY( n ) In Oracle type mode, the data type has the same name. For more information on VARBINARY( n ), see"Type specifications". |
VARCHAR( n ) | TT_VARCHAR( n [BYTE|CHAR]) In Oracle type mode, specify TT_VARCHAR. Character semantics is supported. For more information on TT_VARCHAR, see "Types supported for backward compatibility in Oracle type mode". |
Character data
types
Character data types store character (alphanumeric) data either in the database character set or the UTF-16 format. Character data is stored in strings with byte values. The byte values correspond to one of the database character sets defined when the databaseis created. TimesTen supports both single and multibyte character sets.
The character types are as follows:
CHAR
NCHAR
VARCHAR2
NVARCHAR2
CHAR
TheCHARtype specifies a fixed length character string. If you insert a value into a
CHARcolumn and the value is shorter than the defined column length, then TimesTen blank-pads the value to the column length. If you insert a value
into a
CHARcolumn and the value is longer than the defined length, TimesTen returns an error.
By default, the column length is defined in bytes. Use the
CHARqualifier to define the column length in characters. The size of a character ranges from one byte to four bytes depending on the database character set. The
BYTEand
CHARqualifiers
override the
NLS_LENGTH_SEMANTICSparameter setting. For more information about
NLS_LENGTH_SEMANTICS, see "ALTER
SESSION" and "Setting globalization support attributes" in Oracle
TimesTen In-Memory Database Operations Guide.
Note:
With the
CHARtype, a zero-length string is interpreted as
NULL. With the
TT_CHARtype, a zero-length string is a valid non-
NULLvalue. Both
CHARand
TT_CHARuse blank padded comparison
semantics. The
TT_CHARtype is supported for backward compatibility.
The following example creates a table. Columns are defined with type
CHARand
TT_CHAR. Blank padded comparison semantics are used for these types.
Command> CREATE TABLE typedemo (name CHAR (20), nnme2 TT_CHAR (20)); Command> INSERT INTO typedemo VALUES ('SMITH ','SMITH '); 1 row inserted. Command> DESCRIBE typedemo; Table USER.TYPEDEMO: Columns: NAME CHAR (20) NAME2 TT_CHAR (20) 1 table found. (primary key columns are indicated with *) Command> SELECT * FROM typedemo; < SMITH , SMITH > 1 row found. Command> # Expect 1 row found; blank-padded comparison semantics Command> SELECT * FROM typedemo WHERE name = 'SMITH'; < SMITH , SMITH > 1 row found. Command> SELECT * FROM typedemo WHERE name2 = 'SMITH'; < SMITH , SMITH > 1 row found. Command> # Expect 0 rows; blank padded comparison semantics. Command> SELECT * FROM typedemo WHERE name > 'SMITH'; 0 rows found. Command> SELECT * FROM typedemo WHERE name2 > 'SMITH'; 0 rows found.
The following example alters table
typedemoadding column
name3. The column
name3is defined with character semantics.
Command> ALTER TABLE typedemo ADD COLUMN name3 CHAR (10 CHAR); Command> DESCRIBE typedemo; Table USER.TYPEDEMO: Columns: NAME CHAR (20) NAME2 TT_CHAR (20) NAME3 CHAR (10 CHAR) 1 table found.
NCHAR
TheNCHARdata type is a fixed length string of two-byte Unicode characters.
NCHARdata types are padded to the specified length with the Unicode space character
U+0020 SPACE. Blank-padded comparison semantics are used.
Note:
With the
NCHARtype, a zero-length string is interpreted as
NULL. With the
TT_NCHARtype, a zero-length string is a valid non-
NULLvalue. Both
NCHARand
TT_NCHARuse blank padded comparison
semantics. The
TT_NCHARtype is supported for backward compatibility.
The following example alters table
typedemo, adding column
Name4. Data type is
NCHAR.
Command> ALTER TABLE typedemo ADD COLUMN Name4 NCHAR (10); Command> DESCRIBE typedemo; Table USER.TYPEDEMO: Columns: NAME CHAR (20) NAME2 TT_CHAR (20) NAME3 CHAR (10 CHAR) NAME4 NCHAR (10) 1 table found.
VARCHAR2
TheVARCHAR2data type specifies a variable length character string. When you define a
VARCHAR2column, you define the maximum number of bytes or characters. Each value is stored exactly as you specify it. The value cannot exceed
the maximum length of the column.
You must specify the maximum length. The minimum must be at least one byte. Use the
CHARqualifier to specify the maximum length in characters. For example,
VARCHAR2(10 CHAR).
The size of a character ranges from one byte to four bytes depending on the database character set. The
BYTEand
CHARqualifiers override the
NLS_LENGTH_SEMANTICSparameter setting. For more information on
NLS_LENGTH_SEMANTICS,
see "ALTER SESSION" and "Setting
globalization support attributes" in Oracle TimesTen In-Memory Database Operations Guide.
The
NULLvalue is stored as a single bit for each nullable field within the row. A
NOT INLINE VARCHAR2(
n
)whose value is
NULLtakes
(null bit) + four bytes of storage on 32-bit platforms, whereas an
INLINE VARCHAR2(
n
)whose value is
NULLtakes (null bit) + four bytes +
nbytes of storage, or
nmore bytes of storage
than a
NOT INLINE VARCHAR2(
n
)whose value is
NULL. This storage principal holds for all variable length data types:
TT_VARCHAR,
TT_NVARCHAR,
VARCHAR2,
NVARCHAR2,
VARBINARY.
Notes:
Do not use the
VARCHARdata type. Use
VARCHAR2. Even though both data types are currently synonymous, the
VARCHARdata type may be redefined as a different data type with different semantics.
With the
VARCHAR2type, a zero-length string is interpreted as
NULL. With the
TT_VARCHARtype, a zero-length string is a valid non-NULL value.
VARCHAR2uses nonpadded comparison semantics.
TT_VARCHARuses
blank-padded comparison semantics. The
TT_VARCHARtype is supported for backward compatibility.
The following example alters table
typedemo, adding columns
name5and
name6. The
name5column is defined with type
VARCHAR2. The
name6column is defined with
TT_VARCHAR.
The example illustrates the use of nonpadded comparison semantics with column
name5and blank-padded comparison semantics with column
name6:
Command> ALTER TABLE typedemo ADD COLUMN name5 VARCHAR2 (20); Command> ALTER TABLE typedemo ADD COLUMN name6 TT_VARCHAR (20); Command> DESCRIBE typedemo; Table USER.TYPEDEMO: Columns: NAME CHAR (20) NAME2 TT_CHAR (20) NAME3 CHAR (10 CHAR) NAME4 NCHAR (10) NAME5 VARCHAR2 (20) INLINE NAME6 TT_VARCHAR (20) INLINE 1 table found. (primary key columns are indicated with *) Command> #Insert SMITH followed by 5 spaces into all columns Command> INSERT INTO typedemo VALUES > ('SMITH ', 'SMITH ', 'SMITH ', 'SMITH ','SMITH ', > 'SMITH'); 1 row inserted. Command> # Expect 0; Nonpadded comparison semantics Command> SELECT COUNT (*) FROM typedemo WHERE name5 = 'SMITH'; < 0 > 1 row found. Command> # Expect 1; Blank-padded comparison semantics Command> SELECT COUNT (*) FROM typedemo WHERE name6 = 'SMITH'; < 1 > 1 row found. Command> # Expect 1; Nonpadded comparison semantics Command> SELECT COUNT (*) FROM typedemo WHERE name5 > 'SMITH'; < 1 > 1 row found. Command> # Expect 0; Blank-padded comparison semantics Command> SELECT COUNT (*) FROM typedemo WHERE name6 > 'SMITH'; < 0 > 1 row found.
NVARCHAR2
TheNVARCHAR2data type is a variable length string of two-byte Unicode characters. When you define an
NVARCHAR2column, you define the maximum number of characters. Each value is stored exactly as you specify it. The value cannot
exceed the maximum length of the column.
Note:
With the
NVARCHAR2type, a zero-length string is interpreted as
NULL. With the
TT_NVARCHARtype, a zero-length string is a valid non-NULL value.
NVARCHAR2uses nonpadded comparison semantics.
TT_NVARCHARuses
blank-padded comparison semantics. The
TT_NVARCHARtype is supported for backward compatibility.
The following example alters table
typedemoadding column
name7. Data type is
NVARCHAR2.
Command> ALTER TABLE typedemo ADD COLUMN Nnme7 NVARCHAR2 (20); Command> DESCRIBE typedemo; Table USER1.TYPEDEMO: Columns: NAME CHAR (20) NAME2 TT_CHAR (20) NAME3 CHAR (10 CHAR) NAME4 NCHAR (10) NAME5 VARCHAR2 (20) INLINE NAME6 TT_VARCHAR (20) INLINE NAME7 NVARCHAR2 (20) INLINE 1 table found.
Numeric data types
Numeric types store positive and negative fixed and floating-point numbers, zero, infinity, and values that are the undefined result of an operation (NaN, meaning
not a number).
TimesTen supports both exact and approximate numeric data types. Arithmetic operations can be performed on numeric types only. Similarly,
SUMand
AVGaggregates require numeric types.
The exact numeric types are:
NUMBER
TT_BIGINT
TT_INTEGER
TT_SMALLINT
TT_TINYINT
The approximate types are:
BINARY_DOUBLE
BINARY_FLOAT
FLOAT and FLOAT(n)
NUMBER
TheNUMBERdata type stores zero as well as positive and negative fixed numbers with absolute values from 1.0 x 10-130 up to but not including 1.0 x 10 126. Each
NUMBERvalue requires from five to 22 bytes.
Specify a fixed-point number as
NUMBER(
p,s
), where the following holds:
The argument
pis the precision or the total number of significant decimal digits, where the most significant digit is the left-most non-zero digit and the least significant digit is the right-most known digit.
The argument
sis the scale, or the number of digits from the decimal point to the least significant digit. The scale ranges from -84 to 127.
Positive scale is the number of significant digits to the right of the decimal point up to and including the least significant digit.
Negative scale is the number of significant digits to the left of the decimal point up to but not including the least significant digit. For negative scale, the least significant digit is on the left side of the decimal point, because the number is rounded
to the specified number of places to the left of the decimal point.
Scale can be greater than precision. For example, in the case of E-notation. When scale is greater than precision, the precision specifies the maximum number of significant digits to the right of the decimal point. For example, if you define the column as
type
NUMBER(4,5)and you insert .000127 into the column, the value is stored as .00013. A zero is required for the first digit after the decimal point. TimesTen rounds values after the fifth digit to the right of the decimal point.
If a value exceeds the precision, then TimesTen returns an error. If a value exceeds the scale, then TimesTen rounds the value.
NUMBER(
p
)represents a fixed-point number with precision
pand scale 0 and is equivalent to
NUMBER(
p
,0).
Specify a floating-point number as
NUMBER. If you do not specify precision and scale, TimesTen uses the maximum precision and scale.
The following example alters table
numericsby adding columns
col6,
col7,
col8, and
col9defined with the
NUMBERdata type and specified with different precisions and scales.
Command> ALTER TABLE numerics ADD col6 NUMBER; Command> ALTER TABLE numerics ADD col7 NUMBER (4,2); Command> ALTER TABLE numerics ADD col8 NUMBER (4,-2); Command> ALTER TABLE numerics ADD col8 NUMBER (2,4); Command> ALTER TABLE numerics ADD col9 NUMBER (2,4); Command> DESCRIBE numerics; Table USER1.NUMERICS: Columns: COL1 TT_TINYINT COL2 TT_SMALLINT COL3 TT_INTEGER COL4 TT_INTEGER COL5 TT_BIGINT COL6 NUMBER COL7 NUMBER (4,2) COL8 NUMBER (4,-2) COL9 NUMBER (2,4) 1 table found. (primary key columns are indicated with *)
The next example creates table
numbercomboand defines columns with the
NUMBERdata type using different precisions and scales. The value 123.89 is inserted into the columns.
Command> CREATE TABLE numbercombo (col1 NUMBER, col2 NUMBER (3), > col3 NUMBER (6,2), col4 NUMBER (6,1), col5 NUMBER (6,-2)); Command> DESCRIBE numbercombo; Table USER1.NUMBERCOMBO: Columns: COL1 NUMBER COL2 NUMBER (3) COL3 NUMBER (6,2) COL4 NUMBER (6,1) COL5 NUMBER (6,-2) 1 table found. (primary key columns are indicated with *) Command> INSERT INTO numbercombo VALUES (123.89,123.89,123.89,123.89,123.89); 1 row inserted. Command> VERTICAL ON; Command> SELECT * FROM numbercombo; COL1: 123.89 COL2: 124 COL3: 123.89 COL4: 123.9 COL5: 100 1 row found.
The next example creates a table and defines a column with data type
NUMBER(4,2). An attempt to insert a value of 123.89 results in an overflow error.
Command> CREATE TABLE invnumbervalue (col6 NUMBER (4,2)); Command> INSERT INTO invnumbervalue VALUES (123.89); 2923: Number type value overflow The command failed.
The next example creates a table and defines columns with the
NUMBERdata type using a scale that is greater than the precision. Values are inserted into the columns.
Command> CREATE TABLE numbercombo2 (col1 NUMBER (4,5), col2 NUMBER (4,5), > col3 NUMBER (4,5), col4 NUMBER (2,7), col5 NUMBER (2,7), > col6 NUMBER (2,5), col7 NUMBER (2,5)); Command> INSERT INTO numbercombo2 VALUES > (.01234, .00012, .000127, .0000012, .00000123, 1.2e-4, 1.2e-5); 1 row inserted. Command> DESCRIBE numbercombo2; Table USER1.NUMBERCOMBO2: Columns: COL1 NUMBER (4,5) COL2 NUMBER (4,5) COL3 NUMBER (4,5) COL4 NUMBER (2,7) COL5 NUMBER (2,7) COL6 NUMBER (2,5) COL7 NUMBER (2,5) 1 table found. (primary key columns are indicated with *) Command> SELECT * FROM numbercombo2; COL1: .01234 COL2: .00012 COL3: .00013 COL4: .0000012 COL5: .0000012 COL6: .00012 COL7: .00001 1 row found.
TT_BIGINT
TheTT_BIGINTdata type is a signed integer that ranges from -9,223,372,036,854,775,808 (-263) to 9,223,372,036,854,775,807 (263-1). It requires eight bytes of storage and thus is more compact than the
NUMBERdata
type. It also has better performance than the
NUMBERdata type. You cannot specify
BIGINT.
This example alters table
numericsand attempts to add
col5with a data type of
BIGINT. TimesTen generates an error. A second
ALTER TABLEsuccessfully adds
col5with the data type
TT_BIGINT.
Command> ALTER TABLE numerics ADD COLUMN col5 BIGINT; 3300: BIGINT is not a valid type name; use TT_BIGINT instead The command failed. Command> ALTER TABLE numerics ADD COLUMN col5 TT_BIGINT; Command> DESCRIBE numerics; Table USER1.NUMERICS: Columns: COL1 TT_TINYINT COL2 TT_SMALLINT COL3 TT_INTEGER COL4 TT_INTEGER COL5 TT_BIGINT 1 table found. (primary key columns are indicated with *)
TT_INTEGER
TheTT_INTEGERdata type is a signed integer that ranges from -2,147,483,648 (-231) to 2,147,483,647 (231 -1). It requires four bytes of storage and thus is more compact than the
NUMBERdata type. It also has
better performance than the
NUMBER
datatype. You can specify
TT_INTfor
TT_INTEGER. If you specify either
INTEGERor
INT, these types are mapped to
NUMBER(38).
The following example alters the table
numericsand adds
col3with the data type
INT. Describing the table shows that the data type is
NUMBER(38). The column
col3is dropped. A second
ALTER TABLEadds
col2with the data type
INTEGER. Describing the table shows that the data type is
NUMBER(38). The column
col3is dropped. Columns
col3and
col4are then added with
the data types
TT_INTEGERand
TT_INT. Describing the table shows both data types as
TT_INTEGER.
Command> ALTER TABLE numerics ADD col3 INT; Command> DESCRIBE numerics; Table USER1.NUMERICS: Columns: COL1 TT_TINYINT COL2 TT_SMALLINT COL3 NUMBER (38) 1 table found. (primary key columns are indicated with *) Command> ALTER TABLE numerics col3; Command> ALTER TABLE numerics ADD col3 INTEGER; Command> DESCRIBE numerics; Table USER1.NUMERICS: Columns: COL1 TT_TINYINT COL2 TT_SMALLINT COL3 NUMBER (38) 1 table found. (primary key columns are indicated with *) Command> ALTER TABLE numerics col3; Command> ALTER TABLE numerics ADD COLUMN col3 TT_INTEGER; Command> DESCRIBE numerics; Table USER1.NUMERICS: Columns: COL1 TT_TINYINT COL2 TT_SMALLINT COL3 TT_INTEGER 1 table found. (primary key columns are indicated with *) Command> ALTER TABLE numerics ADD col4 TT_INT; Command> DESCRIBE numerics; Table USER1.NUMERICS: Columns: COL1 TT_TINYINT COL2 TT_SMALLINT COL3 TT_INTEGER COL4 TT_INTEGER 1 table found. (primary key columns are indicated with *)
TT_SMALLINT
TheTT_SMALLINTdata type is a signed integer that ranges from -32,768 (-215) to 32,767 (215-1). It requires two bytes of storage and thus is more compact than the
NUMBERdata type. It also has better performance
than the
NUMBERdata type. You can specify the data type
SMALLINT, but it maps to
NUMBER(38).
The following example alters the table
numericsand adds
col2with the data type
SMALLINT. Describing the table shows that the data type is
NUMBER(38). The column
col2is dropped. A second
ALTER TABLEadds
col2with the data type
TT_SMALLINT.
Command> ALTER TABLE numerics ADD COLUMN col2 SMALLINT; Command> DESCRIBE Numerics; Table USER1.NUMERICS: Columns: COL1 TT_TINYINT COL2 NUMBER (38) 1 table found. (primary key columns are indicated with *) Command> ALTER TABLE numerics COLUMN col2; Command> ALTER TABLE numerics ADD COLUMN col2 TT_SMALLINT; Command> DESCRIBE numerics; Table USER1.NUMERICS: Columns: COL1 TT_TINYINT COL2 TT_SMALLINT 1 table found. (primary key columns are indicated with *)
TT_TINYINT
TheTT_TINYINTdata type is an unsigned integer that ranges from 0 to 255 (28 -1). It requires one byte of storage and thus is more compact than the
NUMBERdata type. It also has better performance than the
NUMBERdata
type. The data type of a negative
TT_TINYINTis
TT_SMALLINT. You cannot specify
TINYINT.
The following example first attempts to create a table named
numericsthat defines a column named
col1with data type
TINYINT. TimesTen returns an error. The example then redefines the column with data type
TT_TINYINT.
Command> CREATE TABLE numerics (col1 TINYINT); 3300: TINYINT is not a valid type name; use TT_TINYINT instead The command failed. Command> CREATE TABLE numerics (col1 TT_TINYINT); Command> DESCRIBE numerics; Table USER1.NUMERICS: Columns: COL1 TT_TINYINT 1 table found. (primary key columns are indicated with *)
Floating-point numbers
Floating-point numbers can be with or without a decimal point. An exponent may be used to increase the range (for example, 1.2E-20).Floating-point numbers do not have a scale because the number of digits that can appear after the decimal point is not restricted.
Binary floating-point numbers are stored using binary precision (the digits 0 and 1). For the
NUMBERdata type, values are stored using decimal precision (the digits 0 through 9).
Literal values that are within the range and precision supported by
NUMBERare stored as
NUMBERbecause literals are expressed using decimal precision.
Use one of the following data types for floating-point numbers:
BINARY_DOUBLE
BINARY_FLOAT
FLOAT and FLOAT(n)
BINARY_DOUBLE
BINARY_DOUBLEis a 64-bit, double-precision, floating-point number.
Both
BINARY_FLOATand
BINARY_DOUBLEsupport the special values
Inf,
-Inf, and
NaN(not a number) and conform to the IEEE standard.
Floating-point number limits:
BINARY_FLOAT
Minimum positive finite value: 1.17549E-38F
Maximum positive finite value: 3.40282E+38F
BINARY_DOUBLE
Minimum positive finite value: 2.22507485850720E-308
Maximum positive finite value: 1.79769313486231E+308
The following example creates a table and defines two columns with the
BINARY_FLOATand
BINARY_DOUBLEdata types.
Command> CREATE TABLE BfBd (Col1 BINARY_FLOAT, Col2 BINARY_DOUBLE); Command> DESCRIBE BfBd; Table UISER1.BFBD: Columns: COL1 BINARY_FLOAT COL2 BINARY_DOUBLE 1 table found. (primary key columns are indicated with *)
BINARY_FLOAT
BINARY_FLOATis a 32-bit, single-precision, floating-point number.
FLOAT
and FLOAT(n)
TimesTen also supports the ANSI type FLOAT.
FLOATis an exact numeric type and is implemented as the
NUMBERtype. The value of
nindicates the number of bits of precision that can be stored, from 1 to 126.
To convert from binary precision to decimal precision, multiply
nby 0.30103. To convert from decimal precision to binary precision, multiply the decimal precision by 3.32193. The maximum 126 digits of binary precision is equivalent to approximately
38 digits of decimal precision.
BINARY
and VARBINARY data types
The BINARYdata type is a fixed-length binary value with a length of
nbytes, where the value of
nranges from 1 to 8300 bytes. The
BINARYdata type requires
nbytes of storage. Data is padded
to the maximum column size with trailing zeros. Zero padded comparison semantics are used.
The
VARBINARYdata type is a variable-length binary value having a maximum length of
nbytes, where the value of
nranges from 1 to 4,194,304 (222) bytes.
The following example creates a table and defines two columns:
col1is defined with data type
BINARYand
col2with data type
VARBINARY. Then, binary data is inserted into each column. Note that the
BINARYvalue
is padded to the right with zeros.
Note:
For details on assigning hexadecimal literals as binary data in TimesTen, see the description for the
HexadecimalLiteralin "Constants".
Command> CREATE TABLE bvar (col1 BINARY (10), col2 VARBINARY (10)); Command> DESCRIBE bvar; Table USER1.BVAR: Columns: COL1 BINARY (10) COL2 VARBINARY (10) INLINE 1 table found. (primary key columns are indicated with *) Command> INSERT INTO bvar (col1, col2) > VALUES (0x4D7953514C, 0x39274D); 1 row inserted. Command> select * from bvar; < 4D7953514C0000000000, 39274D > 1 row found.
Numeric precedence
The result type of an expression is determined by the operand with the highest type precedence. The numeric precedence order is as follows (highest to lowest):BINARY_DOUBLE
BINARY_FLOAT
NUMBER
TT_BIGINT
TT_INTEGER
TT_SMALLINT
TT_TINYINT
For example, the sum of
TT_INTEGERand
BINARY_FLOATvalues is type
BINARY_FLOATbecause
BINARY_FLOAThas higher numeric precedence. Similarly, the product of
NUMBERand
BINARY_DOUBLEvalues
is type
BINARY_DOUBLE.
LOB data types
The large object (LOB) data types can store large and unstructured data such as text, image, video, and spatial data. LOBs include theBLOB,
CLOBand
NCLOBdata types.
You can insert or update data in a column that is of a LOB data type. For update operations, you can set the LOB value to
NULL, an empty value through
EMPTY_CLOBor
EMPTY_BLOB, or replace the entire LOB with new data.
You can update a LOB value with another LOB value. If you delete a row containing a LOB column, you also delete the LOB value.
LOB data type semantics are similar to the following SQL semantics:
BLOBdata types use SQL
VARBINARYsemantics.
CLOBdata types use SQL
VARCHAR2semantics.
NCLOBdata types use SQL
NVARCHAR2semantics.
The following SQL statements, operators, and functions accept one or more of the LOB data types as arguments.
SQL statements:
CREATE TABLE,
SELECT,
INSERT, and
UPDATE.
Operators:
LIKEand
IS [NOT] NULL.
Functions:
ASCIISTR,
CONCAT,
INSTR,
INSTRB,
INSTR4,
LENGTH,
LENGTHB,
LOWER,
LPAD,
NLSSORT,
NVL,
TRIM,
LTRIM,
RTRIM,
SUBSTR,
SUBSTRB,
SUBSTR4,
REPLACE,
RPAD,
SOUNDEX,
TO_DATE,
TO_NUMBER,
TO_CHAR,
and
UPPER.
Note:
Support for LOB data types are detailed in the appropriate SQL operator, statement and function documentation.
Description
LOB conversion SQL functions (TO_BLOB,TO_CLOB,
and TO_LOB) convert to the desired LOB data type.
LOB columns are always stored out of line, so you cannot use the
INLINEattribute when declaring LOB columns.
You can define multiple columns of the LOB data type within a single table.
You cannot create a primary key, unique index, or unique constraint on LOB columns.
You cannot create a materialized view if the detail table contains a LOB column.
In addition to SQL, you can use LOB specific APIs in PL/SQL, ODBC, JDBC, OCI, and PRO*C/C++ for creating and updating LOBs. See the appropriate TimesTen developer's guide for more information on these APIs.
The following sections describe each LOB data type in more detail:
BLOB
CLOB
NCLOB
In addition, the following sections provide more details on LOBs in general:
Difference between NULL and empty LOBs
Initializing LOBs
BLOB
The Binary LOB (BLOB) data type stores unstructured binary large objects. The maximum size for
BLOBdata is 16 MB.
Note:
For details on assigning hexadecimal literals as binary data in TimesTen, see the description for the
HexadecimalLiteralin "Constants".
When you define a
BLOBin a column, you do not define the maximum number of characters as you would with
VARBINARYand other variable length data types. Instead, the definition for the column would be as follows:
Command> CREATE TABLE blob_content ( > id NUMBER PRIMARY KEY, > blob_column BLOB );
To manipulate a
BLOB, the following functions are provided:
There are two methods to initialize a
BLOB, including the
EMPTY_BLOBfunction to initialize an empty
BLOB. For details on initializing a
BLOB, see "Initializing
LOBs". For details on how an empty LOB is different from a
NULLLOB, see "Difference between
NULL and empty LOBs".
To convert a binary value to a
BLOB, use the
TO_LOBor
TO_BLOBfunctions. See "TO_BLOB" and "TO_LOB"for
more details.
CLOB
The Character LOB (CLOB) data type stores single-byte and multibyte character data. The maximum size for
CLOBdata is 4 MB. The maximum number of characters that can be stored in the
CLOBdepends on whether you are using
a single or multibyte character set.
When you define a
CLOBin a column, you do not define the maximum number of characters as you would with
VARCHARand other variable length data types. Instead, the definition for the column would be as follows:
Command> CREATE TABLE clob_content ( > id NUMBER PRIMARY KEY, > clob_column CLOB );
To manipulate a
CLOB, the following functions are provided:
There are two methods to initialize a
CLOB, including the
EMPTY_CLOBfunction to initialize an empty
CLOB. For details on initializing a
CLOB, see "Initializing
LOBs". For details on how an empty LOB is different from a
NULLLOB, see "Difference between
NULL and empty LOBs".
To convert a character string to a
CLOB, use the
TO_LOBor
TO_CLOBfunctions. See "TO_CLOB" and"TO_LOB" for
more details.
NCLOB
The National Character LOB (NCLOB) data type stores Unicode data. The maximum size for an
NCLOBdata is 4 MB.
When you define a
NCLOBin a column, you do not define the maximum number of characters as you would with
VARCHARand other variable length data types. Instead, the definition for the column would be as follows:
Command> CREATE TABLE nclob_content ( > id NUMBER PRIMARY KEY, > nclob_column NCLOB );
The following functions support the
NCLOBdata type:
There are two methods to initialize an
NCLOB, including the
EMPTY_CLOBfunction to initialize an empty
NCLOB. For details on initializing a
NCLOB, see "Initializing
LOBs". For details on how an empty LOB is different from a
NULLLOB, see "Difference between
NULL and empty LOBs".
To convert a character string to an
NCLOB, use the
TO_LOBor
TO_CLOBfunctions. See "TO_CLOB" and"TO_LOB" for
more details.
Difference between NULL and empty LOBs
ANULLLOB is not the same as an empty LOB.
A
NULLLOB has the value of
NULL, so
NULLis returned if you request a
NULLLOB.
An empty LOB is initialized with either the
EMPTY_CLOBor
EMPTY_BLOBfunctions. These functions initialize the LOB to be a zero-length, non-
NULLvalue. You can also use the
EMPTY_CLOBor
EMPTY_BLOBfunctions
to initialize a LOB in a non-nullable column.
Initializing LOBs
You can initialize a LOB in one of two ways:You can insert an empty LOB into a
BLOB,
CLOBor
NCLOBcolumn by using the
EMPTY_BLOBor
EMPTY_CLOBfunctions. This is useful when you do not have any data, but want to create the LOB in preparation
for data. It is also useful for initializing non-nullable LOB columns.
Initialize the LOB by inserting data directly. There is no need to initialize a LOB using the
EMPTY_BLOBor
EMPTY_CLOBfunctions, you can simply insert the data directly.
The following demonstrates examples of each type of initialization:
You can initialize a LOB with the
EMPTY_CLOBfunction, as shown with the following example:
Command> INSERT INTO clob_content (id, clob_column) > VALUES (1, EMPTY_CLOB( ) ); 1 row inserted.
You can initialize a LOB by inserting data directly, as shown with the following example:
Command> INSERT INTO clob_content(id, clob_column) > VALUES (4, 'Demonstration of the LOB initialization.'); 1 row inserted.
You can initialize or update an existing LOB value with the
UPDATEstatement, as shown with the following examples:
Command> UPDATE blob_content > SET blob_column = 0x000AF4511 > WHERE id = 1; 1 row updated. Command> select * from blob_content; < 1, 0000AF4511 > 1 rows found. Command> UPDATE clob_content > SET clob_column = 'Demonstration of the CLOB data type ' > WHERE id = 1; 1 row updated. Command> SELECT * FROM clob_content; < 1, Demonstration of the CLOB data type >
ROWID data type
The address of a row in a table or materialized view is called arowid.The rowid data type is
ROWID. You can examine a rowid by querying the
ROWIDpseudocolumn. See "ROWID" for
details on the
ROWIDpseudocolumn.
Specify literal
ROWIDvalues in SQL statements as constants enclosed in single quotes, as follows:
Command> SELECT ROWID, last_name > FROM employees > WHERE department_id = 20; < BMUFVUAAACOAAAALhM, Hartstein > < BMUFVUAAACOAAAAMhM, Fay > 2 rows found. Command> SELECT ROWID, last_name FROM employees > WHERE ROWID='BMUFVUAAACOAAAALhM'; < BMUFVUAAACOAAAALhM, Hartstein > 1 row found.
The
ROWIDdata type can be used as follows:
As the data type for a table column or materialized view column
In these types of expressions:
Literals
Comparisons:
<,
<=,
>,
>=,
BETWEEN
CASE expressions
CAST
COALESCE
COUNT
DECODE
GREATEST
IN
IS NULL
LEAST
MAX
MIN
NVL
TO_CHAR
TT_HASH
In
ORDER BYand
GROUP BYclauses
In
INSERT...SELECTstatements. Column
col1has been defined with the
ROWIDdata type for these examples:
Command> DESCRIBE master; Table MYUSER.MASTER: Columns: *ID ROWID NOT NULL NAME CHAR (30) 1 table found. (primary key columns are indicated with *) Command> INSERT INTO master(id, name) SELECT ROWID, last_name FROM employees; 107 rows inserted. Command> SELECT * FROM master; < BMUFVUAAACOAAAAGhG, King > < BMUFVUAAACOAAAAHhG, Kochhar > < BMUFVUAAACOAAAAIhG, De Haan > ... 107 rows found.
You can use the
TO_CHARfunction with the
ROWIDpseudocolumn as shown below:
Command> INSERT INTO master(id, name) > SELECT TO_CHAR(ROWID), last_name FROM employees; 107 rows inserted. Command> SELECT * FROM master; < BMUFVUAAACOAAAAGhG, King > < BMUFVUAAACOAAAAHhG, Kochhar > ... 107 rows found.
You can use the
CASTfunction with the
ROWIDpseudocolumn as shown below:
Command> CREATE TABLE master (id CHAR(20) NOT NULL PRIMARY KEY, > name CHAR(30)); Command> INSERT INTO master(id, name) SELECT CAST(ROWID AS CHAR(20)), > last_name from employees; 107 rows inserted.
Implicit type conversions are supported for assigning values and comparison operations
between
ROWIDand
CHARor between
ROWIDand
VARCHAR2data.
When
CHAR,
VARCHAR2, and
ROWIDoperands are combined in
COALESCE,
DECODE,
NVL,
or
CASE expressions, the result data type is
ROWID. Expressions with
CHARand
VARCHAR2values
are converted to
ROWIDvalues to evaluate the expression.
To use
ROWIDvalues with string functions such as
CONCAT, the application
must convert
ROWIDvalues explicitly to
CHARvalues using the SQL
TO_CHARfunction.
Datetime data types
The datetime data types are as follows:DATE
TIME
TIMESTAMP
TT_DATE
TT_TIMESTAMP
DATE
The format of aDATEvalue is
YYYY-MM-DD HH:MI:SSand ranges from -4712-01-01 (January 1, 4712 BC) to 9999-12-31 (December 31, 9999 AD). There are no fractional seconds. The
DATEtype requires seven bytes of storage.
TimesTen does not support user-specified
NLS_DATE_FORMATsettings. The SQL
TO_CHARand
TO_DATEfunctions
can be used to specify other formats.
TIME
The format of aTIMEvalue is
HH:MI:SSand ranges from 00:00:00 (midnight) to 23:59:59 (11:59:59 pm). The
TIMEdata type requires eight bytes of storage.
TIMESTAMP
The format of aTIMESTAMPvalue is
YYYY-MM-DD HH:MI:SS [.FFFFFFFFF]. The fractional seconds precision range is 0 to 9. The default is 6. The date range is from -4712-01-01 (January 1, 4712 BC) to 9999-12-31 (December 31, 9999 AD).
The
TIMESTAMPtype requires 12 bytes of storage. The
TIMESTAMPtype has a larger date range and supports more precision than
TT_TIMESTAMP.
TimesTen does not support user-specified
NLS_TIMESTAMP_FORMATsettings. The SQL
TO_CHARand
TO_DATEfunctions
can be used to specify other formats.
TT_DATE
The format of aTT_DATEvalue is
YYYY-MM-DDand ranges from 1753-01-01 (January 1, 1753 AD) to 9999-12-31 (December 31, 9999 AD). The
TT_DATEdata type requires four bytes of storage.
TT_TIMESTAMP
The format of aTT_TIMESTAMPvalue is
YYYY-MM-DD HH:MI:SS [.FFFFFFFFF]. The fractional seconds precision is 6. The range is from 1753-01-01 00:00:00 (January 1, 1753, midnight) to 9999-12-31 23:59:59 (December 31, 9999, 11:59:59
PM). The
TT_TIMESTAMPtype requires eight bytes of storage.
TT_TIMESTAMPis faster than the
TIMESTAMPdata type and has a smaller storage size.
TimesTen intervals
This section includes the following topics:Using interval data types
Using DATE and TIME data types
Handling timezone conversions
Datetime and interval data types in arithmetic operations
Using interval data types
If you are using TimesTen type mode, refer to the Oracle TimesTen In-Memory Database API and SQL Reference Guide, Release 6.0.3, for information on interval types.TimesTen supports interval types only in a constant specification or intermediate expression result. Interval types cannot be the final result. Columns cannot be defined with an interval type. See"Type
specifications".
You can specify a single-field literal that is an interval in an expression, but you cannot specify a complete expression that returns an interval data type. Instead, the
EXTRACTfunction
must be used to extract the desired component of the interval result.
TimesTen supports interval literals of the following form:
INTERVAL [+/-]
CharString
IntervalQualifier
Using
DATE and TIME data types
This section shows some DATE,
TIME,
and
TIMESTAMPdata type examples:
To create a table named
samplethat contains a column
dcolof type
DATEand a column
tcolof type
TIME, use the following:
CREATE TABLE sample (tcol TIME, dcol DATE);
To insert
DATEand
TIMEvalues into the
sampletable, use this:
INSERT INTO sample VALUES (TIME '12:00:00', DATE '1998-10-28');
To select all rows in the
sampletable that are between noon and 4:00 p.m. on October 29, 1998, use the following:
SELECT * FROM sample WHERE dcol = DATE '1998-10-29' AND tcol BETWEEN TIME '12:00:00' AND TIME '16:00:00';
To create a table named
sample2that contains a column
tscolof type
TIMESTAMPand then select all rows in the table that are between noon and 4:00 p.m. on October 29, 1998, use these statements:
CREATE TABLE sample2 (tscol TIMESTAMP); INSERT INTO sample2 VALUES (TIMESTAMP '1998-10-28 12:00:00'); SELECT * FROM sample2 WHERE tscol BETWEEN TIMESTAMP '1998-10-29 12:00:00' AND '1998-10-29 16:00:00';
Note:
TimesTen enables both literal and string formats of the
TIME,
DATE, and
TIMESTAMPtypes. For example,
timestring ('12:00:00')and
timeliteral (TIME '16:00:00')are both valid ways to specify a
TIMEvalue.
TimesTen reads the first value as
CHARtype and later converts it to
TIMEtype as needed. TimesTen reads the second value as
TIME. The examples above use the literal format. Any values for the fraction not specified in
full microseconds result in a "
Data truncated" error.
Handling timezone conversions
TimesTen does not supportTIMEZONE.
TIMEand
TIMESTAMPdata type values are stored without making any adjustment for time difference.
Applications must assume one time zone and convert
TIMEand
TIMESTAMPto that time zone before sending values to the database. For example, an application can assume its time zone to be Pacific Standard Time. If the application is
using
TIMEand
TIMESTAMPvalues from Pacific Daylight Time or Eastern Standard Time, for example, the application must convert
TIMEand
TIMESTAMPto Pacific Standard Time.
Datetime and interval data types in arithmetic
operations
If you are using TimesTen type mode, see Oracle TimesTen In-Memory Database API and SQL Reference Guide, Release 6.0.3, for information about datetime and interval types in arithmetic operationsYou can perform numeric operations on date, timestamp and interval data. TimesTen calculates the results based on the rules:
You can add or subtract a numeric value to or from a
ORA_DATEor
ORA_TIMESTAMPvalue. TimesTen internally converts
ORA_TIMESTAMPvalues to
ORA_DATEvalues.
You can add or subtract a numeric value to or from a
TT_DATEor
TT_TIMESTAMPvalue and the resulting value is
TT_DATEor
TT_TIMESTAMPrespectively.
Numeric values are treated as number of days. For example,
SYSDATE+ 1 is tomorrow.
SYSDATE- 7 is one week ago.
Subtracting two date columns results in the number of days between the two dates. The return type is numeric.
You cannot add date values. You cannot multiple or divide date or timestamp values.
Table 1-5 is a matrix of datetime arithmetic operations. Dashes represent operations that are not
supported. The matrix assumes that you are using Oracle type mode:
Table
1-5 DateTime arithmetic operations
DATE | TT_DATE | TIMESTAMP | TT_TIMESTAMP | NUMERIC | INTERVAL | |
---|---|---|---|---|---|---|
DATE | ||||||
+ (plus) | — | — | — | — | DATE | DATE |
- (minus) | NUMBER | NUMBER | INTERVAL | INTERVAL | DATE | DATE |
* (multiply) | — | — | — | — | — | — |
/ (divide) | — | — | — | — | — | — |
TT_DATE | ||||||
+ (plus) | — | — | — | — | TT_DATE | TT_DATE |
- (minus) | NUMBER | TT_BIGINT | INTERVAL | INTERVAL | TT_DATE | TT_DATE |
* (multiply) | — | — | — | — | — | — |
/ (divide) | — | — | — | — | — | — |
TIMESTAMP | ||||||
+ (plus) | — | — | — | — | DATE | TIMESTAMP |
- (minus) | INTERVAL | INTERVAL | INTERVAL | INTERVAL | DATE | TIMESTAMP |
* (multiply) | — | — | — | — | — | — |
/ (divide) | — | — | — | — | — | — |
TT_TIMESTAMP | ||||||
+ (plus) | — | — | — | — | TT_TIMESTAMP | TT_TIMESTAMP |
- (minus) | INTERVAL | INTERVAL | INTERVAL | INTERVAL | TT_TIMESTAMP | TT_TIMESTAMP |
* (multiply) | — | — | — | — | — | — |
/ (divide) | — | — | — | — | — | — |
NUMERIC | ||||||
+ (plus) | DATE | TT_DATE | DATE | TT_TIMESTAMP | Not applicable | — |
- (minus) | — | — | — | — | Not applicable | — |
* (multiply) | — | — | — | — | Not applicable | INTERVAL |
/ (divide) | — | — | — | — | Not applicable | — |
INTERVAL | ||||||
+ (plus) | DATE | TT_DATE | TIMESTAMP | TT_TIMESTAMP | — | INTERVAL |
- (minus) | — | — | — | — | INTERVAL | |
* (multiply) | — | — | — | — | INTERVAL | — |
/ (divide) | — | — | — | — | INTERVAL | — |
An interval data type cannot be the final result of a complete expression. The
EXTRACTfunction
must be used to extract the desired component of this interval result.
SELECT tt_date1 - tt_date2 FROM t1; SELECT EXTRACT(DAY FROM timestamp1-timestamp2) FROM t1; SELECT * FROM t1 WHERE timestamp1 - timestamp2 = NUMTODSINTERVAL(10, 'DAY'); SELECT SYSDATE + NUMTODSINTERVAL(20,'SECOND') FROM dual; SELECT EXTRACT (SECOND FROM timestamp1-timestamp2) FROM dual; /* select the microsecond difference between two timestamp values d1 and d2 */ SELECT 1000000*(EXTRACT(DAY FROM d1-d2)*24*3600+ EXTRACT(HOUR FROM d1-d2)*3600+ EXTRACT(MINUTE FROM d1-d2)*60+EXTRACT(SECOND FROM d1-d2) FROM d1;
This example inserts
TIMESTAMPvalues into two columns and then subtracts the two values using the
EXTRACTfunction:
Command> CREATE TABLE ts (id TIMESTAMP, id2 TIMESTAMP); Command> INSERT INTO ts VALUES (TIMESTAMP '2007-01-20 12:45:23', > TIMESTAMP '2006-12-25 17:34:22'); 1 row inserted. Command> SELECT EXTRACT (DAY FROM id - id2) FROM ts; < 25 > 1 row found.
The following queries return errors. You cannot select an interval result:
SELECT timestamp1 - timestamp2 FROM t1;
You cannot compare an
INTERVAL YEAR TO MONTHwith an
INTERVAL DAY TO SECOND:
SELECT * FROM t1 WHERE timestamp1 - timestamp2 = NUMTOYMINTERVAL(10, 'YEAR');
You cannot compare an
INTERVAL DAY TO SECONDwith an
INTERVAL DAY:
SELECT * FROM t1 WHERE timestamp1 - timestamp2 = INTERVAL '10' DAY;
You cannot extract
YEARfrom an
INTERVAL DAY TO SECOND:
SELECT EXTRACT (YEAR FROM timestamp1 - timestamp2) FROM dual;
Restrictions on datetime and interval arithmetic operations
Consider these restrictions when performing datetime and interval arithmetic:The results for addition and subtraction with
DATEand
TIMESTAMPtypes for
INTERVAL YEARand
INTERVAL MONTHare not closed. For example, adding one year to the
DATEor
TIMESTAMPof
'2004-02-29' results in a date arithmetic error (TimesTen error 2787) because February 29, 2005 does not exist (2005 is not a leap year). Adding
INTERVAL '1'month to
DATE '2005-01-30'also results in the same error because February
never has 30 days.
The results are closed for
INTERVAL DAY.
An interval data type cannot be the final result of a complete expression. The
EXTRACTfunction
must be used to extract the desired component of the interval result.
Storage
requirements
Variable-length columns whose declared column length is greater than 128 bytes are stored out of line. Variable-length columns whose declared column length is less than or equal to 128 bytes are stored inline. All LOB data types are stored out of line.For character semantics, the number of bytes stored out of line is dependent on the character set. For example, for a character set with four bytes per character, variable-length columns whose declared column length is greater than 32 (128/4) are stored
out of line.
Table 1-6 shows thestorage
requirements of the various data types.
Table
1-6 Data type storage requirements
Type | Storage required |
---|---|
BINARY( n ) | nbytes. |
BINARY_DOUBLE | Eight bytes. |
BINARY_FLOAT | Four bytes. |
CHAR( n [BYTE|CHAR]) | nbytes or, if character semantics, ncharacters. If character semantics, the length of the column ( n) is based on length semantics and character set. |
DATE | Seven bytes. |
Interval | An interval type cannot be stored in TimesTen. |
NCHAR( n ) | Bytes required is 2*nwhere nis the number of characters. |
NUMBER | Five to 22 bytes. |
NVARCHAR2( n ) | For NOT INLINEcolumns: On 32-bit platforms, 2*(length of value) + 20 bytes (minimum of 28 bytes). On 64-bit platforms, 2*(length of value) + 24 bytes (minimum of 40 bytes). For INLINEcolumns: On 32-bit platforms, 2*(length of column) + 4 bytes. On 64-bit platforms, 2*(length of column) + 8 bytes. |
ROWID | Twelve bytes. |
TIMESTAMP | Twelve bytes. |
TT_BIGINT | Eight bytes. |
TT_DATE | Four bytes. |
TT_DECIMAL( p,s ) | Approximately p/2 bytes. |
TT_INT[EGER] | Four bytes. |
TT_SMALLINT | Two bytes. |
TT_TIME | Eight bytes. |
TT_TIMESTAMP | Eight bytes. |
TT_TINYINT | One byte. |
VARBINARY( n ) | For NOT INLINEcolumns: On 32-bit platforms, length of value + 20 bytes (minimum of 28 bytes). On 64-bit platforms, length of value + 24 bytes (minimum of 40 bytes). For INLINEcolumns: On 32-bit platforms, length of column + 4 bytes. On 64-bit platforms, length of column + 8 bytes. |
VARCHAR2( n [BYTE|CHAR]) | For NOT INLINEcolumns: On 32-bit platforms, length of value + 20 bytes (minimum of 28 bytes). NULLvalue is stored as (null bit) + 4 bytes, or 4.125 bytes. On 64-bit platforms, length of value + 24 bytes (minimum of 40 bytes). NULLvalue is stored as (null bit) + 8 bytes, or 8.125 bytes. This storage principal holds for all variable length NOT INLINEdata types: TT_VARCHAR, TT_NVARCHAR, VARCHAR2, NVARCHAR2, and VARBINARY. For INLINEcolumns: On 32-bit platforms, n+ 4 bytes. NULLvalue is stored as (null bit) + n+ 4 bytes. On 64-bit platforms, n + 8 bytes. NULLvalue is stored as (null bit) + n+ 8 bytes. If character semantics, the length of the column ( n) is based on length semantics and character set. |
BLOBand CLOB | On 32-bit platforms, length of value + 36 bytes (minimum of 40 bytes). On 64-bit platforms, length of value + 48 bytes (minimum of 56 bytes). |
NCLOB | On 32-bit platforms, 2 * (length of value) + 36 bytes (minimum of 40 bytes). On 64-bit platforms, 2 * (length of value) + 48 bytes (minimum of 56 bytes). |
Data type comparison rules
This section describes how values of each data type are compared in TimesTen.Numeric values
A larger value is greater than a smaller value: -1 is less than 10, and -10 is less than -1.The floating-point value
NaNis greater than any other numeric value and is equal to itself.
Date values
A later date is considered greater than an earlier one. For example, the date equivalent of '10-AUG-2005' is less than that of '30-AUG-2006', and '30-AUG-2006 1:15 pm' is greater than '30-AUG-2006 10:10 am'.Character values
Character values are compared in the following ways:Binary and linguistic sorting
Blank-padded and nonpadded comparison semantics
Binary and linguistic sorting
In binary sorting, TimesTen compares character strings according to the concatenated value of the numeric codes of the characters in the database character set. One character is greater than the other if it has a greater numeric values than the other inthe character set. Blanks are less than any character.
Linguistic sorting is useful if the binary sequence of numeric codes does not match the linguistic sequence of the characters you are comparing. In linguistic sorting, SQL sorting and comparison are based on the linguistic rule set by
NLS_SORT.
For more information on linguistic sorts, see "Linguistic sorts" in Oracle
TimesTen In-Memory Database Operations Guide.
The default is binary sorting.
Blank-padded and nonpadded comparison semantics
With blank-padded semantics, if two values have different lengths, TimesTen adds blanks to the shorter value until both lengths are equal. Values are then compared character by character up to the first character that differs. The value with the greatercharacter in the first differing position is considered greater. If two values have no differing characters, then they are considered equal. Thus, two values are considered equal if they differ only in the number of trailing blanks.
Blank-padded semantics are used when both values in the comparison are expressions of type
CHARor
NCHARor text literals.
With nonpadded semantics, two values are compared, character by character, up to the first character that differs. The value with the greater character in that position is considered greater. If two values that have differing lengths are identical up to
the end of the shorter one, then the longer one is considered greater. If two values of equal length have no differing characters, they are considered equal.
Nonpadded semantics are used when both values in the comparison have the type
VARCHAR2or
NVARCHAR2.
An example with blank-padded semantics:
'a ' = 'a'
An example with nonpadded semantics:
'a ' > 'a'
Data type conversion
Generally an expression cannot contain values of different data types. However, TimesTen supports both implicit and explicit conversion from one data type to another. Because algorithms for implicit conversion are subject to change across software releasesand the behavior of explicit conversions is more predictable, TimesTen recommends explicit conversion.
Implicit data type conversion
TimesTen converts a value from one data type to another when such a conversion makes sense.Table 1-7 andTable
1-8 use a matrix to illustrate TimesTen implicit data type conversions.
YESin the cell indicates the conversion is supported.
NOin the cell indicates the conversion is not supported. The rules for implicit conversion follow the
table.
Table
1-7 Implicit data type conversion
CHAR | VARCHAR2 | NCHAR | NVARCHAR2 | DATE | TT_DATE | TIMESTAMP | TT_TIMESTAMP | |
---|---|---|---|---|---|---|---|---|
CHAR | — | YES | YES | YES | YES | YES | YES | YES |
VARCHAR2 | YES | — | YES | YES | YES | YES | YES | YES |
NCHAR | YES | YES | — | YES | YES | YES | YES | YES |
NVARCHAR2 | YES | YES | YES | — | YES | YES | YES | YES |
DATE | YES | YES | YES | YES | — | YES | YES | YES |
TT_DATE | YES | YES | YES | YES | YES | — | YES | YES |
TIMESTAMP | YES | YES | YES | YES | YES | YES | — | YES |
TT_TIMESTAMP | YES | YES | YES | YES | YES | YES | YES | — |
NUMERIC | YES | YES | YES | YES | NO | NO | NO | NO |
BLOB | NO | NO | NO | NO | NO | NO | NO | NO |
CLOB | YES | YES | YES | YES | NO | NO | NO | NO |
NCLOB | YES | YES | YES | YES | NO | NO | NO | NO |
BINARY/VARBINARY | YES | YES | YES | YES | NO | NO | NO | NO |
ROWID | YES | YES | YES | YES | NO | NO | NO | NO |
1-8 Implict data type conversion (continued)
NUMERIC | BLOB | CLOB | NCLOB | BINARY/VARBINARY | ROWID | |
---|---|---|---|---|---|---|
CHAR | YES | YES | YES | YES | YES | YES |
VARCHAR2 | YES | YES | YES | YES | YES | YES |
NCHAR | YES | YES | YES | YES | YES | YES |
NVARCHAR2 | YES | YES | YES | YES | YES | YES |
DATE | NO | NO | NO | NO | NO | NO |
TT_DATE | NO | NO | NO | NO | NO | NO |
TIMESTAMP | NO | NO | NO | NO | NO | NO |
TT_TIMESTAMP | NO | NO | NO | NO | NO | NO |
NUMERIC | — | NO | NO | NO | NO | NO |
BLOB | NO | — | NO | NO | YES | NO |
CLOB | NO | NO | — | YES | NO | NO |
NCLOB | NO | NO | YES | — | NO | NO |
BINARY/VARBINARY | NO | YES | YES | YES | — | NO |
ROWID | NO | NO | NO | NO | NO | — |
During arithmetic operations on and comparisons between character and non-character data types, TimesTen converts from any character data type to a numeric or datetime data type as appropriate. In arithmetic operations between
CHAR/
VARCHAR2and
NCHAR/
NVARCHAR2,
TimesTen converts to a
NUMBER.
During arithmetic operations, floating point values
INFand
NANare not supported when converting character values to numeric values.
During concatenation operations, TimesTen converts non-character data types to
CHAR,
NCHAR,
VARCHAR2, or
NVARCHAR2depending on the other operand.
When comparing a character value with a numeric value, TimesTen converts the character data to a numeric value.
When comparing a character value with a datetime value, TimesTen converts the character data to a datetime value.
During conversion from a timestamp value to a
DATEvalue, the fractional seconds portion of the timestamp value is truncated.
Conversions from
BINARY_FLOATto
BINARY_DOUBLEare exact.
Conversions from
BINARY_DOUBLEto
BINARY_FLOATare inexact if the
BINARY_DOUBLEvalue uses more bits of precision that supported by the
BINARY_FLOAT.
Conversions between either character values or exact numeric values (
TT_TINYINT,
TT_SMALLINT,
TT_INTEGER,
TT_BIGINT,
NUMBER) and floating-point values (
BINARY_FLOAT,
BINARY_DOUBLE)
can be inexact because the character values and the exact numeric values use decimal precision whereas the floating-point numbers use binary precision.
When manipulating numeric values, TimesTen usually adjusts precision and scale to allow for maximum capacity. In such cases, the numeric data type resulting from such operations can differ from the numeric data type found in the underlying tables.
When making assignments, TimesTen converts the value on the right side of the equal sign (=) to the data type of the target of the assignment on the left side.
When you use a SQL function or operator with an argument of a data type other than the one it accepts, TimesTen converts the argument to the accepted data type so long as TimesTen supports the implicit conversion. For more information on supported data type
conversions, see Implicit data type conversion.
During
INSERT,
INSERT... SELECT, and
UPDATEoperations, TimesTen converts the value to the data type of the affected column.
Implicit and explicit
CHAR/
VARCHAR2<->
NCHAR/
NVARCHAR2 conversions are supported except when the character set is
TIMESTEN8. An example of implicit conversion:
Command> CREATE TABLE convdemo (c1 CHAR (10), x1 TT_INTEGER); Command> CREATE TABLE convdemo2 (c1 NCHAR (10), x2 TT_INTEGER); Command> INSERT INTO convdemo VALUES ('ABC', 10); 1 row inserted. Command> INSERT INTO convdemo VALUES ('def', 100); 1 row inserted. Command> INSERT INTO convdemo2 SELECT * FROM convdemo; 2 rows inserted. Command> SELECT x1,x2,convdemo.c1, convdemo2.c1 > FROM convdemo, convdemo2 where Ccnvdemo.c1 = convdemo2.c1; X1, X2, C1, C1 < 10, 10, ABC , ABC > < 100, 100, def , def > 2 rows found.
Null values
The valueNULLindicates the absence of a value. It is a placeholder for a value that is missing. Use a
NULLwhen the actual value is not known
or when a value would not be meaningful. Do not use
NULLto represent a numeric value of zero, because they are not equivalent. Any parameter in an expression can contain
NULLregardless of its data type. In addition, any column in
a table can contain
NULL, regardless of its data type, unless you specify
NOT NULLor
PRIMARY KEYintegrity constraints for the column when you create the table.
The following properties of
NULLaffect operations on rows, parameters, or local variables:
By default,
NULLis sorted as the highest value in a sequence of values.
However, you can modify the sort order value for
NULLwith
NULLS FIRSTor
NULLS LASTin the
ORDER BYclause.
Two
NULLvalues are not equal to each other except in a
GROUP BYor
SELECT DISTINCToperation.
An arithmetic expression containing a
NULLevaluates to
NULL. In fact, all operators (except concatenation) return
NULLwhen given a
NULLoperand. For example,
(5-col), where
colis
NULL,
evaluates to
NULL.
To test for
NULL, use the comparison conditions
IS NULLor
IS NOT NULL. Because
NULLrepresents a lack of data, a
NULLcannot be equal or unequal to any value or to another
NULL.
Thus, the statement
select * from employees where mgr_id = NULLevaluates to 0, since you cannot use this comparison to
NULL. However, the statement
select * from employees where mgr_id is NULLprovides the CEO of the company,
since that is the only employee without a manager. For details, see"IS NULL predicate".
The
NULLvalue itself can be used directly as an operand of an operator or predicate. For example, the
(1 = NULL)comparison is supported. This is the same as if you cast
NULLto the appropriate data type, as follows:
(1 = CAST(NULL AS INT)). Both methods are supported and return the same results.
Because of these properties, TimesTen ignores columns, rows, or parameters containing
NULLwhen:
Joining tables if the join is on a column containing
NULL.
Executing aggregate functions.
In several SQL predicates, described in Chapter 5, "Search Conditions," you can explicitly test for
NULL.
APIs supported by TimesTen offer ways to handle null values. For example, in an ODBC application, use the functions
SQLBindCol,
SQLBindParameter,
SQLGetData,
and
SQLParamDatato handle input and output of
NULLvalues.
INF
and NAN
TimesTen supports the IEEE floating-point values Inf(positive infinity),
-Inf(negative infinity), and
NaN(not a number).
Constant values
You can use constant values in places where a floating-point constant is allowed. The following constants are supported:BINARY_FLOAT_INFINITY
-BINARY_FLOAT_INFINITY
BINARY_DOUBLE_INFINITY
-BINARY_DOUBLE_INFINITY
BINARY_FLOAT_NAN
BINARY_DOUBLE_NAN
In the following example, a table is created with a column of type
BINARY_FLOATand a column of type
TT_INTEGER.
BINARY_FLOAT_INFINITYand
BINARY_FLOAT_NANare inserted into the column of type
BINARY_FLOAT.
Command> CREATE TABLE bfdemo (id BINARY_FLOAT, Ii2 TT_INTEGER); Command> INSERT INTO bfdemo VALUES (BINARY_FLOAT_INFINITY, 50); 1 row inserted. Command> INSERT INTO bfdemo VALUES (BINARY_FLOAT_NAN, 100); 1 row inserted. Command> SELECT * FROM bfdemo; < INF, 50 > < NAN, 100 > 2 rows found.
Primary key values
Inf,
-Inf, and
NaNare acceptable values in columns defined with a primary key. This is different from
NULL, which is not allowed in columns defined with a primary key.
You can only insert
Inf,
-Inf, and
NaNvalues into
BINARY_FLOATand
BINARY_DOUBLEcolumns.
Selecting Inf and NaN (floating-point conditions)
Floating-point conditions determine whether an expression is infinite or is the undefined result of an operation (NaN, meaning not a number).
Consider the following syntax:
<span class="italic">Expression</span> IS [NOT] {NAN|INFINITE}
Expressionmust either resolve to a numeric data type or to a data type that can be implicitly converted to a numeric data type.
The following table describes the floating-point conditions.
Condition | Operation | Example |
---|---|---|
IS [NOT] NAN | Returns TRUEif Expressionis the value NaNwhen NOTis not specified. Returns TRUEif Expressionis not the value NaNwhen NOTis specified. | SELECT * FROM bfdemo WHERE id IS NOT NAN; ID, ID2 < INF, 50 > 1 row found. |
IS [NOT] INFINITE | Returns TRUEif Expressionis the value +Infor -Infwhen NOTis not specified. Returns TRUEif Expressionis neither +Infnor -Infwhen NOTis specified. | SELECT * FROM bfdemo WHERE id IS NOT INFINITE; ID, ID2 < NAN, 100 > 1 row found. |
The constant keywords represent specific
BINARY_FLOATand
BINARY_DOUBLEvalues. The comparison keywords correspond to properties of a value and are not specific to any type, although they can only evaluate to
TRUEfor
BINARY_FLOATor
BINARY_DOUBLEtypes
or types that can be converted to
BINARY_FLOATor
BINARY_DOUBLE.
The following rules apply to comparisons with
Infand
NaN:
Comparison between
Inf(or
-Inf) and a finite value are as expected. For example, 5 >
-Inf.
(Inf = Inf)and
(Inf > -Inf)both evaluate to
TRUE.
(NaN = NaN)evaluates to
TRUE.
In reference to collating sequences:
-Infsorts lower than any other value.
Infsorts lower than
NaNand
NULLand higher than any other value.
NaNsorts higher than
Inf.
NULLsorts higher than
NaN.
NULLis always the largest value in any collating sequence.
Expressions involving Inf and NaN
Expressions containing floating-point values may generateInf,
-Inf, or
NaN. This can occur either because the expression generated overflow or exceptional conditions or because one or more of the values in the expression
was
Inf,
-Inf, or
NaN.
Infand
NaNare generated in overflow or division-by-zero conditions.
Inf,
-Inf, and
NaNvalues are not ignored in aggregate functions.
NULLvalues are. If you want to exclude
Infand
NaNfrom aggregates, or from any
SELECTresult, use
both the
IS NOT NANand
IS NOT INFINITEpredicates.
Overflow
and truncation
Some operations can result in data overflow or truncation. Overflow results in an errorand can generate
Inf. Truncation results in loss of least significant data.
Exact values are truncated only when they are stored in the database by an
INSERTor
UPDATEstatement,
and if the target column has smaller scale than the value. TimesTen returns a warning when such truncation occurs. If the value does not fit because of overflow, TimesTen returns the special value
Infand does not insert the specified value.
TimesTen may truncate approximate values during computations, when values are inserted into the database, or when database values are updated. TimesTen returns an error only upon
INSERTor
UPDATE. When overflow with approximate values
occurs, TimesTen returns the special value
Inf.
There are several circumstances that can cause overflow:
During arithmetic operations, overflow can occur when multiplication results in a number
larger than the maximum value allowed in its type. Arithmetic operations are defined inChapter 3, "Expressions."
When aggregate functions are used, overflow can occur when the sum of several numbers
exceeds the maximum allowable value of the result type. Aggregate functions are defined inChapter 3, "Expressions."
During type conversion, overflow can also occur when, for example, a
TT_INTEGERvalue
is converted to a
TT_SMALLINTvalue.
Truncation can cause an error or warning for alphanumeric or numeric data types:
For character data, an error occurs if a string is truncated because it is too long
for its target type. For
NCHARand
NVARCHAR2types, truncation always occurs on Unicode character boundaries. In the
NCHARdata types, a single-byte value (half a Unicode character) has no meaning and is not possible.
For numeric data, a warning occurs when any trailing non-zero digit is dropped from
the fractional part of a numeric value.
Underflow
When an approximate numeric value is too close to zero to be represented by the hardware, TimesTen underflows to zero and returns a truncation warning.Replication limits
TimesTen places the following limits on the size of data types in a database that is being replicated:VARCHAR2and
VARBINARYcolumns cannot exceed four megabytes. For character-length semantics, the limit is four megabytes. The database character set determines how many characters can be represented by four megabytes. The minimum
number of characters is 1,000,000/ 4 = 250,000 characters.
NVARCHAR2columns cannot exceed 500,000 characters (four megabytes).
TimesTen type mode (backward compatibility)
TimesTen supports a data type backward compatibility mode called TimesTen type mode. This is specified using the data store creation attributeTypeMode, where
TypeMode=1indicates TimesTen mode. Type mode determines the default data
type. For example,
DATEin TimesTen type mode defaults to
TT_DATE;
DATEin Oracle type mode defaults to
ORA_DATE.
For more information on type modes, see "TypeMode" in Oracle
TimesTen In-Memory Database Reference. For information on data type usage in TimesTen type mode, refer toOracle TimesTen In-Memory Database API and SQL Reference Guide, Release 6.0.3.
Data types supported in TimesTen type mode
Table1-9 Data types supported in TimesTen type mode
Data type | Description |
---|---|
BIGINT | A signed eight-byte integer in the range -9,223,372,036,854,775,808 (-263) to 9,223,372,036,854,775,807 (263-1). Alternatively, specify TT_BIGINT. |
BINARY( n ) | Fixed-length binary value of nbytes. Legal values for nrange from 1 to 8300. BINARYdata is padded to the maximum column size with trailing zeroes. |
BINARY_DOUBLE | A 64-bit floating-point number. BINARY_DOUBLEis a double-precision native floating point number. Supports +Inf, -Inf, and NaNvalues. BINARY_DOUBLEis an approximate numeric value consisting of an exponent and mantissa. You can use exponential or E-notation. BINARY_DOUBLEhas binary precision 53. Minimum positive finite value: 2.22507485850720E-308 Maximum positive finite value: 1.79769313486231E+308 Alternatively, specify DOUBLE [PRECISION]or FLOAT[(53)]. |
BINARY_FLOAT | A 32-bit floating-point number. BINARY_FLOATis a single-precision native floating-point type. Supports +Inf, -Inf, and NaNvalues. BINARY_FLOATis an approximate numeric value consisting of an exponent and mantissa. You can use exponential or E-notation. BINARY_FLOAThas binary precision 24. Minimum positive finite value: 1.17549E-38F Maximum positive finite value: 3.40282E+38F Alternatively, specify REALor FLOAT(24). |
CHAR[ACTER][( n [BYTE|CHAR])] | Fixed-length character string of length nbytes or characters. Default is one byte. BYTEindicates that the column has byte-length semantics. Legal values for nbytes range from 1 to 8300. CHARindicates that the column has character-length semantics. The minimum CHARlength is one character. The maximum CHARlength depends on how many characters fit in 8300 bytes. This is determined by the database character set in use. For character set AL32UTF8, up to four bytes per character may be needed, so the CHARlength limit ranges from 2075 to 8300 depending on the character set. A zero-length string is a valid non-NULL value. The string value "" is an empty, zero-length string, but not a NULL value. However, in PL/SQL, a zero-length string is always considered to be NULL. Therefore, when you use PL/SQL, any empty string parameter in SQL is converted to NULLby PL/SQL before the value is passed to the TimesTen database. CHARdata is padded to the maximum column size with trailing blanks. Blank-padded comparison semantics are used. For information on blank-padded and nonpadded semantics, see"Blank-padded and nonpadded comparison semantics". Alternatively, specify TT_CHAR[( n [BYTE|CHAR])]. |
DATE | Stores date information: century, year, month, and day. The format is YYYY-MM-DD, where MMis expressed as an integer. For example: 2006-10-28. Storage size is four bytes. Valid dates are between 1753-01-01 (January 1,1753) and 9999-12-31 (December 31, 9999). Alternatively, specify TT_DATE. |
DEC[IMAL][( p [, s ])]or NUMERIC[( p [, s ])] | An exact numeric value with a fixed maximum precision (total number of digits) and scale (number of digits to the right of the decimal point). The value of precisionpmust be between 1 and 40. The value of scale smust be between 0 and p. The default precision is 40 and the default scale is 0. |
INTERVAL [+/-] IntervalQualifier | TimesTen partially supports interval types, expressed with INTERVALand an IntervalQualifier. An IntervalQualifiercan specify only a single field type with no precision. The default leading precision is eight digits for all interval types. The single field type can be one of: YEAR, MONTH, DAY, HOUR, MINUTE, or SECOND. Currently, interval types can be specified only with a constant. |
NCHAR[( n )] | Fixed-length string of ntwo-byte Unicode characters. The number of bytes required is 2* nwhere nis the specified number of characters. NCHARcharacter limits are half the byte limits, so the maximum size is 4150. Default and minimum bytes of storage is 2 n(2). A zero-length string is a valid non-NULL value. The string value "" is an empty, zero-length string, but not a NULL value. However, in PL/SQL, a zero-length string is always considered to be NULL. Therefore, when you use PL/SQL, any empty string parameter in SQL is converted to NULLby PL/SQL before the value is passed to the TimesTen database. NCHARdata is padded to the maximum column size with U+0020 SPACE. Blank-padded comparison semantics are used. For information on blank-padded and nonpadded semantics, see"Blank-padded and nonpadded comparison semantics". Alternatively, specify TT_NCHAR[( n )]. NATIONAL CHARACTERand NATIONAL CHARare synonyms for NCHAR. |
SMALLINT | A native signed 16-bit integer in the range -32,768 (-215) to 32,767 (215-1). Alternatively, specify TT_SMALLINT. |
TIME | A time of day between 00:00:00 (midnight) and 23:59:59 (11:59:59 pm), inclusive. The format is:HH:MI:SS. Storage size is eight bytes. |
TIMESTAMP | A date and time between 1753-01-01 00:00:00 (midnight on January 1, 1753) and 9999-12-31 23:59:59 pm (11:59:59 pm on December 31, 9999), inclusive. Any values for the fraction not specified in full microseconds result in a "Data Truncated" error. The format is YYYY-MM-DD HH:MI:SS [.FFFFFFFFF]. Storage size is eight bytes. Alternatively, specify TT_TIMESTAMPor [TT_]TIMESTAMP(6). |
TINYINT | Unsigned integer ranging from 0 to 255 (28-1). Since TINYINTis unsigned, the negation of a TINYINTis SMALLINT. Alternatively, specify TT_TINYINT. |
INT[EGER] | A signed integer in the range -2,147,483,648 (-231) to 2,147,483,647 (231-1). Alternatively, specify TT_INTEGER. |
NVARCHAR( n ) | Variable-length string of ntwo-byte Unicode characters. The number of bytes required is 2* nwhere nis the specified number of characters. NVARCHARcharacter limits are half the byte limits so the maximum size is 2,097,152 (221). You must specify n. A zero-length string is a valid non-NULL value. The string value "" is an empty, zero-length string, but not a NULL value. However, in PL/SQL, a zero-length string is always considered to be NULL. Therefore, when you use PL/SQL, any empty string parameter in SQL is converted to NULLby PL/SQL before the value is passed to the TimesTen database. Blank-padded comparison semantics are used. For information on blank-padded and nonpadded semantics, see"Blank-padded and nonpadded comparison semantics". Alternatively, specify TT_NVARCHAR( n ). NATIONAL CHARACTER VARYING, NATIONAL CHAR VARYING, and NCHAR VARYINGare synonyms for NVARCHAR. |
VARCHAR( n [BYTE|CHAR]) | Variable-length character string having maximum length nbytes or characters. You must specify n. BYTEindicates that the column has byte-length semantics. Legal values for nbytes range from 1 to 4194304 (222). CHARindicates that the column has character-length semantics. A zero-length string is a valid non-NULL value. The string value "" is an empty, zero-length string, but not a NULL value. However, in PL/SQL, a zero-length string is always considered to be NULL. Therefore, when you use PL/SQL, any empty string parameter in SQL is converted to NULLby PL/SQL before the value is passed to the TimesTen database. Blank-padded comparison semantics are used. For information on blank-padded and nonpadded semantics, see"Blank-padded and nonpadded comparison semantics". Alternatively, specify TT_VARCHAR( n [BYTE|CHAR]). |
VARBINARY ( n ) | Variable-length binary value having maximum length nbytes. Legal values for nrange from 1 to 4194304 (222). |
Oracle data types supported in TimesTen type mode
Table1-10 Oracle data types supported in TimesTen type mode
Data type | Description |
---|---|
NUMBER[( p [, s ])] | Number having precision and scale. The precision value ranges from 1 to 38 decimal. The scale value ranges from -84 to 127. Both precision and scale are optional. If you do not specify a precision or a scale, then maximum precision of 38 and flexible scale are assumed. NUMBERsupports scale > precision and negative scale. NUMBERstores zero as well as positive and negative fixed numbers with absolute values from 1.0 x 10-130 up to but not including 1.0 x 10126. If you specify an arithmetic expression whose value has an absolute value greater than or equal to 1.0 x 10126, then TimesTen returns an error. In TimesTen type mode, the NUMBERdata type stores 10E-89 as its smallest (closest to zero) value. |
ORA_CHAR[( n [BYTE|CHAR])] | Fixed-length character string of length nbytes or characters. Default is one byte. BYTEindicates that the column has byte-length semantics. Legal values for nbytes range from 1 to 8300. CHARindicates that the column has character-length semantics. The minimum CHARlength is one character. The maximum CHARlength depends on how many characters fit in 8300 bytes. This is determined by the database character set in use. For character set AL32UTF8, up to four bytes per character may be needed, so the CHARlength limit ranges from 2075 to 8300 depending on the character set. A zero-length string is a valid non-NULL value. The string value "" is an empty, zero-length string, but not a NULL value. However, in PL/SQL, a zero-length string is always considered to be NULL. Therefore, when you use PL/SQL, any empty string parameter in SQL is converted to NULLby PL/SQL before the value is passed to the TimesTen database. ORA_CHARdata is padded to the maximum column size with trailing blanks. Blank-padded comparison semantics are used. For information on blank-padded and nonpadded semantics, see"Blank-padded and nonpadded comparison semantics". |
ORA_DATE | Stores date and time information: century, year, month, date, hour, minute, and second. Format isYYYY-MM-DD HHMMSS. Valid date range is from January 1, 4712 BC to December 31, 9999 AD. The storage size is seven bytes. There are no fractional seconds. |
ORA_NCHAR[( n )] | Fixed-length string of length ntwo-byte Unicode characters. The number of bytes required is 2* nwhere nis the specified number of characters. NCHARcharacter limits are half the byte limits so the maximum size is 4150. Default and minimum bytes of storage is 2 n(2). A zero-length string is a valid non-NULL value. The string value "" is an empty, zero-length string, but not a NULL value. However, in PL/SQL, a zero-length string is always considered to be NULL. Therefore, when you use PL/SQL, any empty string parameter in SQL is converted to NULLby PL/SQL before the value is passed to the TimesTen database. ORA_NCHARdata is padded to the maximum column size with U+0020 SPACE. Blank-padded comparison semantics are used. For information on blank-padded and nonpadded semantics, see"Blank-padded and nonpadded comparison semantics". |
ORA_NVARCHAR2 ( n ) | Variable-length string of ntwo-byte Unicode characters. The number of bytes required is 2* nwhere nis the specified number of characters. ORA_NVARCHAR2character limits are half the byte limits so the maximum size is 2,097,152 (221). You must specify n. A zero-length string is a valid non-NULL value. The string value "" is an empty, zero-length string, but not a NULL value. However, in PL/SQL, a zero-length string is always considered to be NULL. Therefore, when you use PL/SQL, any empty string parameter in SQL is converted to NULLby PL/SQL before the value is passed to the TimesTen database. Nonpadded comparison semantics are used. For information on blank-padded and nonpadded semantics, see"Blank-padded and nonpadded comparison semantics". |
ORA_VARCHAR2( n [BYTE|CHAR]) | Variable-length character string having maximum length nbytes or characters. BYTEindicates that the column has byte-length semantics. Legal values for nbytes range from 1 to 4194304 (222). You must specify n. CHARindicates that the column has character-length semantics. A zero-length string is a valid non-NULL value. The string value "" is an empty, zero-length string, but not a NULL value. However, in PL/SQL, a zero-length string is always considered to be NULL. Therefore, when you use PL/SQL, any empty string parameter in SQL is converted to NULLby PL/SQL before the value is passed to the TimesTen database. Nonpadded comparison semantics are used. For information on blank-padded and nonpadded semantics, see"Blank-padded and nonpadded comparison semantics". |
ORA_TIMESTAMP [( fractional_seconds_precision )] | Stores year, month, and day values of the date data type plus hour, minute, and second values of time.Fractional_seconds_precisionis the number of digits in the fractional part of the seconds field. Valid date range is from January 1, 4712 BC to December 31, 9999 AD. The fractional seconds precision range is 0 to 9. The default is 6. Format is: YYYY-MM-DD HH:MI:SS [.FFFFFFFFF] Storage size is 12 bytes. |
转自:/article/8848510.html
相关文章推荐
- Oracle AWR 介绍
- Oracle11g 数据表 导入Sqlserver2008R2 遇到number类型字段不匹配
- fireDAC oracle
- rhel6.3_oracle11R2的DG搭建安装
- Oracle手边常用70则脚本知识汇总
- Oracle - 数据库字符集的查询
- Oracle - 常用命令
- ORACLE的基础培训
- 一个Oracle GeoSQL性能问题解决过程
- oracle的alert日志迁移
- oracle的trace日志迁移
- oracle--游标
- Oracle手边常用命令及操作语句
- Oracle In-Memory database cache --TimesTen
- Like模糊查询与带有关键字Reverse的索引应用学习
- oracle优化:避免全表扫描
- oracle限制用户登陆
- oracle的sequence创建修改
- oracle 函数 WMSYS.WM_CONCAT 的用法 与 mysql 函数GROUP_CONCAT的用法
- Oracle--视图,序列及索引