# Instrução SET SCHEMA

A instrução SET SCHEMA define o esquema padrão para a sessão da conexão como sendo o esquema designado. O esquema padrão é utilizado como esquema de destino por todas as instruções emitidas pela conexão que não especificam explicitamente o nome do esquema.

Para a instrução SET SCHEMA ser bem-sucedida, o esquema de destino deve existir. Se o esquema não existir, retornará um erro. Consulte a Instrução CREATE SCHEMA.

A instrução SET SCHEMA não é transacional: Se a instrução SET SCHEMA for parte de uma transação desfeita, a mudança de esquema permanecerá aplicada.

#### Sintaxe

    SET [CURRENT] SCHEMA [=]
    { nome-do-esquema |
    USER | ? | '<constante-cadeia-de-caracteres>' } | SET CURRENT SQLID [=]
    {
    nome-do-esquema | USER | ? | '<constante-cadeia-de-caracteres>' }

O nome-do-esquema é um identificador com comprimento máximo igual a 128. Não diferencia letras maiúsculas de minúsculas, a menos que esteja entre aspas (Por exemplo, SYS é equivalente a sYs, SYs, sys, etc.).

USER é o usuário corrente. Se não houver usuário corrente definido, o esquema corrente padrão será o esquema APP (Se for especificado um nome de usuário na conexão, o nome de usuário será o esquema padrão para a conexão, caso exista um esquema com este nome).

? é a especificação de um parâmetro dinâmico que pode ser utilizado em instruções preparadas. A instrução SET SCHEMA pode ser preparada uma vez e executada com valores de esquema diferentes. Os valores do esquema são tratados como constantes cadeia de caracteres, portanto diferenciando letras maiúsculas e minúsculas. Por exemplo, para designar o esquema APP deve ser utilizada a cadeia de caracteres "APP", em vez de "app".

    -- os comandos a seguir são todos equivalentes,
    -- e funcionam assumindo que exista um esquema chamado HOTEL
    SET SCHEMA HOTEL
    SET SCHEMA hotel
    SET CURRENT SCHEMA hotel
    SET CURRENT SQLID hotel
    SET SCHEMA = hotel
    SET CURRENT SCHEMA = hotel
    SET CURRENT SQLID = hotel
    SET SCHEMA "HOTEL" -- identificador entre aspas
    SET SCHEMA 'HOTEL' -- cadeia de caracteres entre apóstrofos

    -- Este exemplo produz um erro, porque
    -- hotel em minúsculas não será encontrado
    SET SCHEMA = 'hotel'

    -- Este exemplo produz um erro, porque SQLID
    -- não é permitido sem CURRENT
    SET SQLID hotel

    -- Este exemplo define o esquema como o ID do usuário corrente
    SET CURRENT SCHEMA USER

    // Abaixo está um exemplo da utilização de SET SCHEMA em um programa Java
    PreparedStatement ps = conn.PrepareStatement("set schema ?");
    ps.setString(1,"HOTEL");
    ps.executeUpdate();
    ... fazer alguma coisa
    ps.setString(1,"APP");
    ps.executeUpdate();

    ps.setString(1,"app"); //erro - a cadeia de caracteres diferencia
    // letras maiúsculas e minúsculas; app não será encontrado
    ps.setNull(1, Types.VARCHAR); //erro - não é permitido nulo

Tópico pai: Instruções SET
Referências relacionadas
Instrução SET CURRENT ISOLATION