HP 3000 Manuals

Expression [ ALLBASE/SQL Reference Manual ] MPE/iX 5.5 Documentation


ALLBASE/SQL Reference Manual

Expression 

An expression can consist of a primary or several primaries connected by
arithmetic operators.  A primary is a signed or unsigned value derived
from one of the items listed in the SQL syntax below.

Scope 

SQL Data Manipulation Statements

SQL Syntax 
[REV BEG]

    {ColumnName                                    }
    {USER                                          }
    {:HostVariable [[INDICATOR] :IndicatorVariable]}
    {?                                             }
    {:LocalVariable                                }
    {:ProcedureParameter                           }
    {::Built-inVariable                            }
    {AddMonthsFunction                             }
[+] {AggregateFunction                             }
[-] {Constant                                      }
    {DateTimeFunction                              }
    {CurrentFunction                               }
    {LongColumnFunction                            }
    {StringFunction                                }
    {CASTFunction                                  }
    {(Expression)                                  }
    {TIDFunction                                   }

[         {ColumnName                                   }]
[         {:HostVariable[[INDICATOR] :IndicatorVariable]}]
[         {?                                            }]
[         {:LocalVariable                               }]
[         {:ProcedureParameter                          }]
[{* }     {::Built-inVariable                           }]
[{/ }     {AddMonthsFunction                            }]
[{+ } [+] {AggregateFunction                            }] [...]
[{- } [-] {Constant                                     }]
[{||}     {DateTimeFunction                             }]
[         {CurrentFunction                              }]
[         {LongColumnFunction                           }]
[         {StringFunction                               }]
[         {CASTFunction                                 }]
[         {(Expression)                                 }]
[REV END]

Parameters 

+, -                    designate unary plus and unary minus.  Unary plus
                        assigns the primary a positive value.  Unary
                        minus assigns the primary a negative value.
                        Default is positive.

ColumnName              is the name of a column from which a value is to
                        be taken; column names are defined in the "Names"
                        chapter.

USER                    The keyword USER can be used as a character
                        constant in several locations as follows:

                           *   In a WHERE clause predicate when comparing
                               it to a character string, for example:

                                    WHERE Owner = USER
                                    WHERE Owner IN ('ALLUSERS', USER)

                           *   In the VALUES clause of the INSERT
                               statement, for example:

                                    VALUES (USER)

                           *   In a DEFAULT clause of a column
                               definition, for example:

                                    Owner CHAR(20) DEFAULT USER NOT NULL

                           *   In a SELECT list, returning a character
                               string, for example:

                                    SELECT USER, column1

                           *   In an UPDATE SET clause, assigning a value
                               to a character string, for example:

                                    SET Owner = USER

                        USER evaluates to the current DBEUserID. In ISQL,
                        it evaluates to the logon name of the ISQL user.
                        From an application program, it evaluates to the
                        logon name running the program.  USER behaves
                        like a CHAR(20) constant, with trailing blanks if
                        the logon name has fewer than 20 characters.

                        Note that if a column in your table is named
                        USER, it must be preceded with the table name for
                        column values to be selected.  The function USER
                        takes precedence over any column named USER.

HostVariable            contains a value in an application program being
                        input to the expression.

                        IndicatorVariable       names an indicator
                                                variable, whose value
                                                determines whether the
                                                associated host variable
                                                contains a NULL value:

                                                > = 0    the value is not
                                                         NULL

                                                < 0      the value is
                                                         NULL (The value
                                                         in the host
                                                         variable will be
                                                         ignored.)

?                       is a place holder for a dynamic parameter in a
                        prepared SQL statement in an application program.
                        The value of the dynamic parameter is supplied at
                        run time.

LocalVariable           contains a value in a procedure.

ProcedureParameter      contains a value that is passed into or out of a
                        procedure.

Built-inVariable        is one of the following built-in variables used
                        for error handling:
                           *   ::sqlcode
                           *   ::sqlerrd2
                           *   ::sqlwarn0
                           *   ::sqlwarn1
                           *   ::sqlwarn2
                           *   ::sqlwarn6
                           *   ::activexact

                        The first six of these have the same meaning that
                        they have as fields in the SQLCA in application
                        programs.  Note that in procedures, sqlerrd2
                        returns the number of rows processed for all host
                        languages.  However, in application programs,
                        sqlerrd3 is used in COBOL, Fortran, and Pascal,
                        while sqlerr2 is used in C. ::activexact
                        indicates whether a transaction is in progress or
                        not.  For additional information, refer to the
                        application programming guides and to the chapter
                        "Constraints, Procedures, and Rules."

AddMonthsFunction       returns a value that represents a DATE or
                        DATETIME value with a certain number of months
                        added to it.

AggregateFunction       is a computed value; aggregate functions are
                        defined in this chapter.

Constant                is a specific value; constants are defined in
                        this chapter.

DateTimeFunction        returns a value that is a conversion of a
                        date/time data type into an INTEGER or CHAR
                        value, or from a CHAR value.

CurrentFunction         returns a value that represents the current DATE,
                        TIME, or DATETIME.

LongColumnFunction      returns information from a long column
                        descriptor.

StringFunction          returns a partial value or attribute of string
                        data.[REV BEG]

CASTFunction            converts data from one data type to another.

(Expression)            is one or more of the above primaries, enclosed
                        in parentheses.

*                       multiplies two primaries.

/                       divides two primaries.

+                       adds two primaries.

-                       subtracts two primaries. 

||                      concatenates two string operands.[REV END]

TIDFunction             returns the database address of a row (or rows
                        for a BULK SELECT) of a table or an updatable
                        view.  You cannot use mathematical operators with
                        this function except to compare it (using = or
                        <>) to a value, host variable, or dynamic
                        parameter.

Description 

   *   Arithmetic operators can be used between numeric values, that is,
       those with data types of FLOAT, REAL, INTEGER, SMALLINT, or
       DECIMAL. Refer to the "Data Types" chapter for rules governing the
       resulting precision and scale of DECIMAL operations.

   *   Arithmetic operators can also be used between DATE, TIME,
       DATETIME, and INTERVAL values.  Refer to the "Data Types" chapter
       for rules on the valid operations and the resulting data types.

   *   Elements in an expression are evaluated in the following order:

          *   Aggregate functions and expressions in parentheses are
              evaluated first.

          *   Unary plusses and minuses are evaluated next.

          *   The * and / operations are performed next.

          *   The + and - operations are then performed.

   *   You can enclose expressions in parentheses to control the order of
       their evaluation.  For example:

            10 * 2 - 1 = 19, but
            10 * (2-1) = 10

   *   TO_INTEGER is the only date/time function that can be used in
       arithmetic expressions.

   *   When two primaries have the same data type, the result is of that
       data type.  For example, when an INTEGER is divided by an INTEGER,
       the result is INTEGER. In such cases, the result will be
       truncated.[REV BEG]

   *   If either arithmetic operand is the NULL value, then the result is
       the NULL value.

   *   Arithmetic operators cannot be used to concatenate string values.
       Use || to concatenate string operands. 

   *   Both operands of concatenation operator should be one of the
       following:  CHAR (or VARCHAR, or Native CHAR, or Native VARCHAR),
       BINARY (or VARBINARY), but no mix of CHAR and BINARY.

   *   If either concatenation operand is the NULL value, then the result
       of the concatenation is the NULL value.

   *   If one concatenation operand is a variable length string (VARCHAR,
       Native VARCHAR, VARBINARY), then the result data type of the
       concatenation is a variable length string.

   *   If both concatenation operands are fixed length string data type
       (CHAR, Native CHAR, BINARY), then the result of the concatenation
       is fixed length string.

   *   The concatenation result will consist of the first operand
       followed by the second operand.  The trailing blanks of the string
       value are preserved by concatenation regardless of the string's
       data types.  The resultant string may be truncated on the right,
       if the length exceeds the maximum string length of 3996 bytes.  If
       truncation occurs, a truncation warning is sent.

   *   Type conversion, truncation, underflow, or overflow can occur when
       some expressions are evaluated.  For more information, refer to
       the chapter, "Data Types."[REV END]

   *   If the value of an indicator variable is less than zero, the value
       of the corresponding host variable is considered to be NULL.

       _________________________________________________________________ 

       NOTE  To be consistent with the standard SQL and to support
             portability of code, it is strongly recommended that you use
             a -1 to indicate a NULL value.  However, ALLBASE/SQL
             interprets all negative indicator variable values as
             indicating a NULL value in the corresponding host variable.

       _________________________________________________________________ 

   *   The following expressions can evaluate to NULL:

          *   Host variable with an indicator variable

          *   Local variable

          *   Procedure parameter

          *   Column

          *   Add Months function

          *   DateTime function

          *   Aggregate function

          *   CAST function

          *   String function

   *   A NULL value in an expression causes comparison operators and
       other predicates to evaluate to unknown.  Refer to the "Search
       Conditions" chapter for more information on evaluation of
       comparison operators and predicates containing NULL values.

   *   The ?  can be used as a host variable or dynamic parameter in an
       expression as shown in the following examples:

          *   In the WHERE clause of any SELECT statement:

                     SELECT *
                       FROM PurchDB.Orders
                      WHERE PartNumber = ?
                            AND OrderDate > ?
                   ORDER BY OrderDate

          *   In the WHERE and SET clauses of an UPDATE statement:

                   UPDATE PurchDB.Parts
                      SET SalesPrice = ?
                    WHERE PartNumber = ?

          *   In the WHERE clause of a DELETE statement:

                   DELETE FROM PurchDB.OrderItems
                         WHERE ItemDueDate
                       BETWEEN ? and ?

          *   In the VALUES clause of an INSERT or a BULK INSERT
              statement.  In this example each ?  corresponds in
              sequential order to a column in the PurchDB.OrderItems
              table:

                   BULK INSERT INTO PurchDB.OrderItems VALUES (?,?,?,?)

              See the syntax descriptions for each DML statement, and for
              the PREPARE, DESCRIBE, EXECUTE, and OPEN statements for
              details of dynamic parameter usage.

Example 

The result length of PartNumber || VendPartNumber is 32 in this example.

     CREATE TABLE PurchDB.SupplyPrice
            (Part Number     CHAR(16) NOT CASE SENSITVE not null unique,
             VendorNumber    INTEGER
             VendPartNumber  CHAR(16) lang=german,
             UnitPrice       DECIMAL (10,2),
             Delivery Days   SMALLINT,
             DiscountQty     SMALLINT)

     SELECT PartNumber || VendPartNumber, UnitPrice from PurchDB.SupplyPrice;



MPE/iX 5.5 Documentation