SQL$HELP_OLD72.HLB  —  CREATE  VIEW  Examples
    Example 1: Defining a view based on a single table

    This example shows a view definition that uses three columns from
    a single table, EMPLOYEES.

    SQL> CREATE VIEW EMP_NAME
    cont>   AS SELECT
    cont>           FIRST_NAME,
    cont>           MIDDLE_INITIAL,
    cont>           LAST_NAME
    cont>      FROM EMPLOYEES;
    SQL> --
    SQL> -- Now display the rows from the view just created.
    SQL> SELECT * FROM EMP_NAME;
     FIRST_NAME   MIDDLE_INITIAL   LAST_NAME
     Alvin        A                Toliver
     Terry        D                Smith
                   .
                   .
                   .

    Example 2: Defining a view that does not allow you to insert or
    update rows that do not conform to the view's definition

    This example shows a view definition using the WITH CHECK OPTION
    clause.

    SQL>  CREATE VIEW ADMN_VIEW
    cont>        AS SELECT * FROM JOB_HISTORY
    cont>        WHERE DEPARTMENT_CODE = 'ADMN'
    cont>        WITH CHECK OPTION CONSTRAINT ADMN_VIEW_CONST;
    SQL> -- You cannot insert a row that does not
    SQL> -- conform to the view definition.
    SQL> --
    SQL>  INSERT INTO ADMN_VIEW (DEPARTMENT_CODE) VALUES ('MBMN');
    %RDB-E-INTEG-FAIL, violation of constraint ADMN_VIEW_CONST-
    caused operation to fail

    Example 3: Defining a view based on multiple tables

    You can also define a view using more than one table.

    SQL> CREATE VIEW CURRENT_SALARY
    cont>  AS SELECT
    cont>        E.LAST_NAME,
    cont>        E.FIRST_NAME,
    cont>        E.EMPLOYEE_ID,
    cont>        SH.SALARY_START,
    cont>        SH.SALARY_AMOUNT
    cont>      FROM
    cont>        SALARY_HISTORY SH, EMPLOYEES E
    cont>      WHERE
    cont>        SH.EMPLOYEE_ID = E.EMPLOYEE_ID
    cont>      AND
    cont>        SH.SALARY_END IS NULL           ;

    This example defines a view from the EMPLOYEES and SALARY_HISTORY
    tables. It uses the select expression to:

    o  Choose the columns derived from each table. Because no column
       names are specified before the select expression, the columns
       inherit the names from the source tables.

    o  Join the tables and limit the view to current salaries.

    Example 4: Defining a view with local column names

    SQL> CREATE VIEW EMP_JOB
    cont>      ( CURRENT_ID,
    cont>        CURRENT_NAME,
    cont>        CURRENT_JOB,
    cont>        SUPERVISOR   )
    cont>  AS SELECT
    cont>        E.EMPLOYEE_ID,
    cont>        E.LAST_NAME,
    cont>        J.JOB_TITLE,
    cont>        JH.SUPERVISOR_ID
    cont>     FROM
    cont>        EMPLOYEES E,
    cont>        JOB_HISTORY JH,
    cont>        JOBS J
    cont>     WHERE
    cont>        E.EMPLOYEE_ID = JH.EMPLOYEE_ID
    cont>     AND
    cont>        JH.JOB_CODE = J.JOB_CODE
    cont>     AND
    cont>        JH.JOB_END IS NULL      ;

    This view definition:

    o  Specifies local names for the columns in the view.

    o  Joins the EMPLOYEES and JOB_HISTORY tables. This join links
       rows in the EMPLOYEES table to rows in the JOB_HISTORY table.

    o  Joins the JOB_HISTORY and JOBS tables. This join lets the view
       contain job titles instead of job codes.

    o  Uses the JH.JOB_END IS NULL expression. This clause specifies
       that only the current JOB_HISTORY rows, where the JOB_END
       column is null, should be included in the view.

    The following query uses the view defined in the previous
    example:

    EXEC SQL
            DECLARE X CURSOR FOR
            SELECT  CURRENT_ID, CURRENT_NAME, CURRENT_JOB, SUPERVISOR
            FROM    EMP_JOB
    END-EXEC

    EXEC SQL
            OPEN X
    END-EXEC

    PERFORM WHILE SQLCODE NOT = 0

            EXEC SQL
                    FETCH X
                    INTO :ID, :NAME, :JOB, :SUPER
            END-EXEC

    END PERFORM

    EXEC SQL
            CLOSE X
    END-EXEC

    Example 5: Defining a view with a calculated column

    This example shows a view definition that derives a column
    through a calculation based on a column in an base table.

    SQL> CREATE VIEW SS_DEDUCTION
    cont>        ( IDENT,
    cont>          SALARY,
    cont>          SS_AMOUNT )
    cont>  AS SELECT
    cont>        E.EMPLOYEE_ID,
    cont>        SH.SALARY_AMOUNT,
    cont>        SH.SALARY_AMOUNT * 0.065
    cont>      FROM
    cont>        SALARY_HISTORY SH, EMPLOYEES E
    cont>      WHERE
    cont>        SH.EMPLOYEE_ID = E.EMPLOYEE_ID
    cont>      AND
    cont>        SH.SALARY_END IS NULL   ;

    Each time the view column SS_AMOUNT is selected, it computes a
    new value from the SALARY_AMOUNT column of the SALARY_HISTORY
    table.

    Example 6: Defining a view dependent on another view

    This example creates a view, DEPENDENT_VIEW, that refers to
    the CURRENT_JOB view in its definition to include current job
    information for employees in the engineering department.

    SQL> CREATE VIEW DEPENDENT_VIEW
    cont>   AS SELECT * FROM CURRENT_JOB
    cont>           WHERE DEPARTMENT_CODE = 'ENG';
Close Help