# Instrução CREATE VIEW

As visões são tabelas virtuais formadas por uma consulta. A visão é um objeto do dicionário que pode ser utilizado, até ser removido.

As visões não são atualizáveis.

Se for especificado um nome de visão qualificado, o nome do esquema não poderá começar por SYS.

#### Sintaxe

    CREATE VIEW nome-da-visão
        [ ( nome-de-coluna-simples [, nome-de-coluna-simples] * ) ]
    AS Consulta

A definição da visão pode conter uma lista de colunas da visão, opcional, para atribuir nomes explícitos às colunas da visão. Se não houver uma lista de colunas, a visão herdará os nomes de coluna da consulta subjacente. Todas as colunas da visão devem possuir nomes únicos.

    CREATE VIEW SAMP.V1 (COL_SUM, COL_DIFF)
            AS SELECT COMISS + BÔNUS, COMISS - BÔNUS
            FROM SAMP.EMPREGADOS;

    CREATE VIEW SAMP.V_EMP_CURR (CURRICULUM)
            AS VALUES 'Delores M. Quintana', 'Heather A. Nicholls', 'Bruce Adamson';

    CREATE VIEW SAMP.PROJ_COMBO
            (NUM_PROJ, PROJ_DATA_FIM, PROJ_EQUIPE, PROJ_CHEFE)
            AS SELECT NUM_PROJ, PROJ_DATA_FIM, PROJ_EQUIPE, PROJ_CHEFE
            FROM SAMP.PROJETO
            UNION ALL
            SELECT NUM_PROJ, EMSTDATE, EMPTIME, NUM_EMP
            FROM SAMP.ATIV_EMP
            WHERE NUM_EMP IS NOT NULL;

#### Sistema de dependência de instrução

As definições das visões são dependentes das tabelas e visões referenciadas na definição da visão. As instruções de DML (linguagem de manipulação de dados) que contêm referência a visões dependem destas visões, assim como dos objetos nas definições das visões dos quais as visões dependem. As instruções que fazem referência à visão dependem dos índices que as visões utilizam; o índice utilizado pela visão pode mudar de uma instrução para outra, baseado em como a consulta é otimizada. Por exemplo, dado:

    CREATE TABLE T1 (C1 DOUBLE PRECISION);

    CREATE FUNCTION SIN (DATA DOUBLE)
            RETURNS DOUBLE EXTERNAL NAME 'java.lang.Math.sin'
            LANGUAGE JAVA PARAMETER STYLE JAVA;

    CREATE VIEW V1 (C1) AS SELECT SIN(C1) FROM T1;

então a instrução a seguir:

    SELECT * FROM V1

é dependente da visão V1, da tabela T1, e da função escalar externa SIN.

Tópico pai: Instruções CREATE
Referências relacionadas
Instrução CREATE FUNCTION
Instrução CREATE INDEX
Instrução CREATE PROCEDURE
Instrução CREATE SCHEMA
Instrução CREATE SYNONYM
Instrução CREATE TABLE
Instrução CREATE TRIGGER