Please enable JavaScript to view this site.

R:BASE 11 Help

Navigation: Function Index > I

IINFO

Scroll Prev Top Next More

(IINFO(arg1,arg2,arg3))

 

The IINFO function is used to return information about tables, columns, or indexes by reading internal bitmask flags. The function requires the ID number for the table, column, or index. This ID number can be obtained from the system tables SYS_TABLES, SYS_COLUMNS, or SYS_INDEXES, respectively. IINFO returns 0 if FALSE, or the number in argument 3 if TRUE.

 

Syntax:

 

(IINFO(flagtype,id,bitmask))

 

 

Where:

         flagtype specifies the type of information returned; table flags, column flags, column flags for server tables, index flags, row ID

 

             id specifies the ID number from the system tables for the table ID, column ID, or index ID

 

             bitmask species the flag in the system table

 

 

Remarks:

 

The values for arg1, arg2, and arg3 must be non-null integers, even if a particular argument is not needed for that case.

 

IINFO returns 0 if FALSE, or the bitmask number in parameter 3 if TRUE (flags 4-7).

 
 

Flags:

 

Info

Flag Type

ID

Bitmask

Description

Row ID

0

0

0

Returns the rowid of the current row. The rowid is the offset from the start of file 2 where that row is stored. The values for arg2 and arg3 are not used. Using a 0 for arg2 and arg3 is recommended.

Minimum Data Type Scale

1

integer

0

Returns the minimum scale for the data type. The value for arg2 must be an integer value. The value for arg3 is not used. Using a 0 for arg3 is recommended.

Maximum Data Type Scale

2

integer

0

Returns the maximum scale for the data type. The value for arg2 must be an integer value. The value for arg3 is not used. Using a 0 for arg3 is recommended.

Table Cascade Flag

3

table ID

0

Returns cascade flag for a table. The value for arg3 is not used. Using a 0 for arg3 is recommended.

Column Flags

 

4

column ID

1

Returns bitmask value if is an autonumber column

4

column ID

2

Returns bitmask value if a comment exists for column

4

column ID

4

Returns bitmask value if column has a default value

4

column ID

8

Returns bitmask value if column is temporary

4

column ID

16

Returns bitmask value if column has an index

4

column ID

32

Returns bitmask value if contains a USER default

4

column ID

64

Returns bitmask value if contains a Not NULL flag

4

column ID

128

Returns bitmask value if is a primary key or unique key

Column Flags

(Server Tables)

5

column ID

1

Returns bitmask value if column is an optimal row qualifier

5

column ID

2

Returns bitmask value if server column is read only

5

column ID

4

Returns bitmask value if server column is autonumbered

5

column ID

8

Returns bitmask value if server column row version qualifier

Table Flags

6

table ID

1

Returns bitmask value if comment exists for table

6

table ID

2

Returns bitmask value if table has a primary key

6

table ID

4

Returns bitmask value if table has a foreign key

6

table ID

8

Returns bitmask value if table has an autonumbered column

6

table ID

16

Returns bitmask value if table has a default column

6

table ID

32

Returns bitmask value if table is readonly (dBASE)

6

table ID

64

Returns bitmask value if table is temporary

6

table ID

128

Returns bitmask value if table has a referenced key

6

table ID

256

Returns bitmask value if table has a Not NULL column

6

table ID

512

Returns bitmask value if table has a unique key

6

table ID

1024

Returns bitmask value if table has a column with a data type greater than 10

6

table ID

2048

Returns bitmask value if table has a VARBIT/VARCHAR column

6

table ID

4096

Returns bitmask value if a cascade flag updates and deletes through all primary keys and unique keys

6

table ID

8192

Returns bitmask value if server table has column aliases

6

table ID

16384

Returns bitmask value if there is at least one trigger defined for the table

6

table ID

32768

Returns bitmask value if relation as system view which created during multiple inner joins

Index Flags

7

index ID

3

Returns bitmask value for the constraint type:

0 = index, 1 = foreign key, 2 = primary key, 3 = unique key

7

index ID

4

Returns bitmask value if this is a dBase index

7

index ID

8

Returns bitmask value if this is a unique index

7

index ID

16

Returns bitmask value if index is temporary

7

index ID

32

Returns bitmask value if this is a referenced key

7

index ID

64

Returns bitmask value if this is a case sensitive index

7

index ID

128

Returns bitmask value if this is a Foreign Index

 

 

Examples:
 

-- Example 01:

-- Using flag type 0 for the Titles table in the RRBYW20 database

SELECT EmpTID,EmpTitle,(IINFO(0,0,0)) FROM Titles
 
EmpTID     EmpTitle                       (IINFO(0,0

---------- ------------------------------ ----------

         1 Office Manager                     524289

         2 Receptionist                       524341

         3 Sales Clerk                        524393

         4 Director Marketing                 524445

         5 Director Corporate Sales           524497

         6 Director Government Sales          524549

         7 Manager Support & Services         524601

         8 Outside Sales                      524653

 

 

-- Example 02:
-- Returns minimum and maximum data type scales using IINFO and (CVAL('ROWCOUNT')) with the RRBYW20 database.

-- The values for currency will vary based upon the current CURRENCY DIGITS setting.
SELECT (CVAL('ROWCOUNT')) AS SYS_TYPE, SYS_TYPE_NAME=18, +

(IINFO(1, (INT(CVAL('ROWCOUNT'))), 0)) AS SYS_MIN, +

(IINFO(2, (INT(CVAL('ROWCOUNT'))), 0)) AS SYS_MAX +

FROM SYS_TYPES

 
Here is what it generates:

 
SYS_TYPE        SYS_TYPE_NAME      SYS_MIN    SYS_MAX    

--------------- ------------------ ---------- ----------

1               CURRENCY                    2          2

2               VARBIT             -0-        -0-

3               BITNOTE            -0-        -0-

4               BIT                -0-        -0-

5               VARCHAR            -0-        -0-

6               BIGNUM             -0-        -0-

7               BSTR               -0-        -0-

8               GUID               -0-        -0-

9               TEXT               -0-        -0-

10              NUMERIC                     0         15

11              INTEGER                     0          0

12              REAL               -0-        -0-

13              DOUBLE             -0-        -0-

14              DATE               -0-        -0-

15              TIME                        0          3

16              DATETIME                    0          3

17              NOTE               -0-        -0-
 

-- Example 03:
-- Displays tables with Cascade within the RRBYW20 database.

-- Note that the tables with 1 for the cascade value are tables

-- with primary keys that cascade to tables with foreign keys.
SELECT SYS_TABLE_NAME=20, +

SYS_TABLE_ID, +

(IINFO(3,SYS_TABLE_ID,0)) AS SYS_CASCADE +

FROM SYS_TABLES WHERE SYS_TABLE_TYPE = 'TABLE'

 

SYS_TABLE_NAME       SYS_TABLE_ SYS_CASCAD

-------------------- ---------- ----------

Customer                     29          1

CompUsed                     30          0

SalesBonus                   31          0

PaymentTerms                 32          0

Contact                      33          0

ProdLocation                 34          0

Levels                       35          0

Component                    36          0

Product                      37          0

SecurityTable                38          0

InvoiceHeader                39          0

PrintOptions                 40          0

InvoiceDetail                41          0

LicenseInformation           43          0

Titles                       44          1

Employee                     45          1

StateAbr                     46          0

FormTable                    47          0

BonusRate                    48          0

TestNote                     49          0

ContactCallNotes             51          0

tempemployee                 74          0

 

 

-- Example 04:

-- Checks that the CustState colun in the Customer table is indexed

SET VAR vCustStateHasIndex = (IINFO(4,191,16))

SHOW VAR vCustStateHasIndex

        16

 

-- Example 05:

-- Checks that the Employee table has a primary key

SET VAR vEmployeeHasPK = (IINFO(6,45,2))

SHOW VAR vEmployeeHasPK

         2

 

-- Example 06:

-- Checks that the Component table has a referenced key.

SET VAR vComponentRef = (IINFO(6,39,128))

SHOW VAR vComponentRef

       128

 

-- Example 07:

-- Returns the constraint type for the EmpID in the SalesBonus table

-- (0 = index, 1 = foreign key, 2 = primary key, 3 = unique key)

SET VAR vIsForeignKey = (IINFO(7,42,3))

SHOW VAR vIsForeignKey

         1