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
Referências relacionadas
Instrução SET CURRENT ISOLATION