The SET SCHEMA statement sets the default schema for a connection's session to the designated schema. The default schema is used as the target schema for all statements issued from the connection that do not explicitly specify a schema name.
The target schema must exist for the SET SCHEMA statement to succeed. If the schema doesn't exist an error is returned. See CREATE SCHEMA statement.
The SET SCHEMA statement is not transactional: If the SET SCHEMA statement is part of a transaction that is rolled back, the schema change remains in effect.
SET [ CURRENT ] SCHEMA [ = ] { schemaName | USER | ? | 'stringConstant' } | SET CURRENT SQLID [ = ] { schemaName | USER | ? | 'stringConstant' }
The schemaName is an identifier with a maximum length of 128. It is case insensitive unless enclosed in double quotes. (For example, SYS is equivalent to sYs, SYs, and sys.)
USER is the current user. If no current user is defined, the current schema defaults to the APP schema. (If a user name was specified upon connection, the user's name is the default schema for the connection, if a schema with that name exists.)
? is a dynamic parameter specification that can be used in prepared statements. The SET SCHEMA statement can be prepared once and then executed with different schema values. The schema values are treated as string constants so they are case sensitive. For example, to designate the APP schema, use the string "APP" rather than "app".
-- The following are all equivalent and will work -- assuming a schema called 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" -- quoted identifier SET SCHEMA 'HOTEL' -- quoted string -- This example produces an error because -- lower case hotel won't be found SET SCHEMA = 'hotel' -- This example produces an error because SQLID is not -- allowed without CURRENT SET SQLID hotel -- This sets the schema to the current user id SET CURRENT SCHEMA USER // Here's an example of using SET SCHEMA in an Java program PreparedStatement ps = conn.PrepareStatement("set schema ?"); ps.setString(1,"HOTEL"); ps.executeUpdate(); ... do some work ps.setString(1,"APP"); ps.executeUpdate(); ps.setString(1,"app"); //error - string is case sensitive // no app will be found ps.setNull(1, Types.VARCHAR); //error - null is not allowed