Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
• | Referência da linguagem SQL Informações de referência sobre a linguagem SQL do
Derby,
incluindo páginas de manual para instruções, funções e outros elementos da
sintaxe. | |
• | Palavras reservadas do SQL Palavras chave do SQL além das palavras chave do padrão SQL-92. | |
• | Suporte do Derby às funcionalidades do SQL-92 Uma lista de funcionalidades do SQL-92 que o
Derby
dá suporte e não dá suporte. | |
• | Tabelas do sistema Derby Informações de referência sobre os catálogos do sistema do
Derby. | |
• | Mensagens de exceção e estados SQL do Derby Informações sobre as mensagens de exceção do
Derby. | |
• | Referência do JDBC Informações sobre a implementação da interface de JDBC do
Derby,
incluindo suporte a funcionalidades do JDBC 2.0. | |
• | Definição de atributos para a URL de conexão com o banco de dados Informações sobre os atributos suportados pela URL de conexão com o banco de
dados do JDBC do Derby. | |
• | Conformidade com o J2EE: API de transação Java e extensões javax.sql Informações sobre os atributos suportados pelo suporte do
Derby
à API de Transação Java. | |
• | API do Derby Notas sobre as APIs proprietárias para o
Derby. |
• | Aspas delimitam os identificadores especiais, referidos no SQL-92 como
identificadores delimitados. | |
• | Apóstrofos delimitam cadeias de caracteres. | |
• | Na cadeia de caracteres, para representar um apóstrofo (também chamado de
aspas simples) são usados dois apóstrofos (Em outras palavras, o apóstrofo é o
caractere de escape do apóstrofo).
As aspas não necessitam de caractere de escape.
Para representar aspas deve-se, simplesmente, utilizar aspas.
Entretanto, deve ser observado que no programa Java as aspas necessitam do
caractere de escape contrabarra (\). Exemplo:
| |
• | As palavras chave do SQL não são sensíveis a letras maiúsculas e minúsculas.
Por exemplo, a palavra chave SELECT pode ser escrita como SELECT, Select,
select, ou sELECT. | |
• | Os identificadores no estilo SQL-92 não são sensíveis a letras maiúsculas e
minúsculas
(consulte IdentificadorSQL92),
a menos que estejam delimitados. | |
• | Os identificadores no estilo Java são sensíveis a letras maiúsculas e
minúsculas. | |
• | O * é um caractere curinga na
ExpressãoSeleção.
Consulte O curinga *.
Também pode ser o operador de multiplicação.
Em todos os outros casos é um meta-símbolo da sintaxe, sinalizando itens que
podem ser repetidos zero ou mais vezes. | |
• | % e _ são caracteres curinga quando utilizados nas cadeias de caracteres
após o operador LIKE (exceto quando precedidos pelo caractere de escape).
Consulte Expressão booleana. | |
• | De acordo com o padrão SQL-92, dois hífens (--) e o caractere de nova-linha
delimitam um comentário.
Os dois hífens iniciam o comentário, e o caractere de nova-linha termina o
comentário. |
"A.B"
"A"."B"
• | criação da tabela (Instrução CREATE TABLE) | |
• | especificação das colunas atualizáveis no cursor | |
• | no nome de correlação da coluna em uma expressão SELECT
(consulte ExpressãoSeleção) | |
• | no nome de correlação da coluna em uma ExpressãoTabela
(consulte ExpressãoTabela) |
Neste exemplo, o nome-da-correlação COL1 para C11 não é permitido, porque C11 aparece na lista de colunas FOR UPDATE. Pode ser utilizado o nome-da-correlação COL2 para C12, porque C12 não aparece na lista de colunas de FOR UPDATE.SELECT C11 AS COL1, C12 AS COL2, C13 FROM T1 FOR UPDATE OF C11, C13
-- P.PAÍS é o nome da coluna qualificado pelo nome-da-correlação. SELECT P.PAÍS FROM APP.PAÍSES P
Neste exemplo, o nome-da-correlação COL1 para C11 não é permitido, porque C11 aparece na lista de colunas de FOR UPDATE. Pode ser utilizado o nome-da-correlação COL2 para C12, porque C12 não aparece na lista de colunas de FOR UPDATE.SELECT C11 AS COL1, C12 AS COL2, C13 FROM T1 FOR UPDATE OF C11, C13
ij> CREATE TABLE MINHA_TABELA (MINHA_COLUNA INT); 0 rows inserted/updated/deleted ij> INSERT INTO MINHA_TABELA VALUES (1), (2), (3); 3 rows inserted/updated/deleted -- este exemplo utiliza o comando prepare do ij, -- que prepara a instrução ij> prepare p1 AS 'INSERT INTO MINHA_TABELA VALUES (4)'; -- p1 depende de MINHA_TABELA; ij> execute p1; 1 row inserted/updated/deleted -- O Derby executa sem recompilar ij> CREATE INDEX I1 ON MINHA_TABELA(MINHA_COLUNA); 0 rows inserted/updated/deleted -- p1 está temporariamente inválido por causa do novo índice ij> execute p1; 1 row inserted/updated/deleted -- O Derby recompila automaticamente e executa p1 ij> DROP TABLE MINHA_TABELA; 0 rows inserted/updated/deleted -- O Derby permite remover a tabela -- porque o conjunto de resultados de p1 está fechado, -- entretanto a instrução p1 está temporariamente inválida ij> CREATE TABLE MINHA_TABELA (MINHA_COLUNA INT); 0 rows inserted/updated/deleted ij> INSERT INTO MINHA_TABELA VALUES (1), (2), (3); 3 rows inserted/updated/deleted ij> execute p1; 1 row inserted/updated/deleted -- Como p1 está inválida, o Derby tenta recompilar -- antes de executar. -- É bem-sucedido e executa. ij> DROP TABLE MINHA_TABELA; 0 rows inserted/updated/deleted -- a instrução p1 agora está inválida, -- e desta vez a tentativa de recompilar -- na hora de executar vai falhar ij> execute p1; ERROR 42X05: Table/View 'MINHA_TABELA' does not exist.
• | adicionar coluna à tabela | |
• | adicionar restrição à tabela | |
• | remover da tabela uma restrição existente | |
• | aumentar o comprimento de coluna VARCHAR, CHAR VARYING e CHARACTER VARYING | |
• | sobrepor o bloqueio no nível de linha para a tabela (ou remover a sobreposição) |
ALTER TABLE nome-da-tabela { ADD COLUMN definição-da-coluna | ADD CONSTRAINT cláusula | DROP { PRIMARY KEY | FOREIGN KEY nome-da-restrição | UNIQUE nome-da-restrição | CHECK nome-da-restrição | CONSTRAINT nome-da-restrição } ALTER alteração-da-coluna | LOCKSIZE { ROW | TABLE } }
nome-de-coluna-simplestipo-de-dado [ restrição no nível-de-coluna ]* [ [ WITH ] DEFAULT {ExpressãoConstante | NULL } ]
nome-da-coluna SET DATA TYPE VARCHAR(inteiro) | nome-da-coluna SET INCREMENT BY constante-inteira
• | Ao adicionar uma restrição de chave estrangeira ou de verificação a uma
tabela existente, o
Derby
verifica a tabela para ter certeza que as linhas existentes satisfazem a
restrição.
Se alguma linha for inválida, o
Derby
lançará uma exceção de instrução, e a restrição não será adicionada. | |
• | Todas as colunas incluídas na chave primária devem conter dados não nulos
e serem únicas.
ALTER TABLE ADD UNIQUE e PRIMARY KEY dispõem de um método resumido para
definir uma chave primária formada por uma única coluna.
Se for especificado PRIMARY KEY na definição da coluna C, o efeito será o mesmo
de especificar a cláusula PRIMARY KEY(C) como uma cláusula em separado.
A coluna não pode conter valores nulos, portanto o atributo NOT NULL
também deve ser especificado. |
• | Aumentar o comprimento de uma coluna VARCHAR existente.
Pode ser utilizado CHARACTER VARYING ou CHAR VARYING como sinônimo para a
palavra chave VARCHAR.
Para aumentar o comprimento de uma coluna deste tipo, deve ser especificado
o tipo de dado e o novo tamanho após o nome da coluna. Não é permitido diminuir o tamanho ou mudar o tipo de dado.
Não é permitido aumentar o comprimento de uma coluna que faz parte de uma
chave primária ou chave de unicidade referenciada por uma restrição de chave
estrangeira, ou que seja parte de uma restrição de chave estrangeira. | |
• | Especificação do intervalo entre valores consecutivos da coluna de identidade.
Para definir o intervalo entre valores consecutivos da coluna de identidade
deve ser especificada uma constante-inteira.
A coluna deve ter sido definida anteriormente com o atributo IDENTITY
(SQLState 42837).
Caso existam linhas na tabela, os valores na coluna para a qual o padrão para
SET INCREMENT foi adicionado não mudam. |
-- Adicionar uma nova coluna com restrição no -- nível-de-coluna a uma tabela existente. -- Se a tabela tiver alguma linha será lançada uma exceção, -- uma vez que a nova coluna será inicializada com NULL -- em todas as linhas da tabela. ALTER TABLE CIDADES ADD COLUMN REGIÃO VARCHAR(26) CONSTRAINT NOVA_RESTRIÇÃO CHECK (REGIÃO IS NOT NULL); -- Adicionar uma restrição de unicidade a uma tabela existente. -- Será lançada uma exceção se forem encontradas chaves duplicadas. ALTER TABLE SAMP.DEPARTAMENTOS ADD CONSTRAINT NOVA_UNICIDADE UNIQUE (NUM_DEP); -- Adicionar uma restrição de chave estrangeira à -- tabela cidades. Cada linha de cidades é verificada -- para ter certeza que satisfaz a restrição. -- Se alguma linha não satisfizer a restrição, a -- restrição não será adicionada ALTER TABLE CIDADES ADD CONSTRAINT FK_PAÍSES FOREIGN KEY (PAÍS) REFERENCES PAÍSES (PAÍS); -- Adicionar uma restrição de chave primária à tabela. -- Primeiro, criar a tabela. CREATE TABLE ATIVIDADES (ID_CIDADE INT NOT NULL, ESTAÇÃO CHAR(2), ATIVIDADE VARCHAR(32) NOT NULL); -- Não será possível adicionar esta restrição se as -- colunas que compõem a chave primária possuírem -- dados nulos ou valores duplicados. ALTER TABLE ATIVIDADES ADD PRIMARY KEY (ID_CIDADE, ATIVIDADE); -- Remover a restrição de chave primária da tabela cidades. ALTER TABLE CIDADES DROP CONSTRAINT PK_CIDADES; -- Remover a restrição de chave estrangeira da tabela cidades. ALTER TABLE CIDADES DROP CONSTRAINT FK_PAÍSES; -- Adicionar a coluna NUM_DEP com valor padrão igual a 1. ALTER TABLE SAMP.ATIV_EMP ADD COLUMN NUM_DEP INT DEFAULT 1; -- Aumentar o comprimento da coluna VARCHAR. ALTER TABLE SAMP.EMP_FOTO ALTER FORMATO_FOTO SET DATA TYPE VARCHAR(30); -- Alterar a granularidade do bloqueio da tabela. ALTER TABLE SAMP.VENDAS LOCKSIZE TABLE;
CREATE FUNCTION nome-da-função ( [ parâmetro-da-função [, parâmetro-da-função] ] * ) RETURNS tipo-de-dado [ elemento-da-função ] *
{ | LANGUAGE { JAVA } | EXTERNAL NAME cadeia-de-caracteres | PARAMETER STYLE JAVA | { NO SQL | CONTAINS SQL | READS SQL DATA } | { RETURNS NULL ON NULL INPUT | CALLED ON NULL INPUT } }
O EXTERNAL NAME (nome externo) não pode conter espaços indevidos.nome-da-classe.nome-do-método
CREATE [UNIQUE] INDEX nome-do-índice ON nome-da-tabela ( nome-de-coluna-simples [ ASC | DESC ] [ , nome-de-coluna-simples [ ASC | DESC ]] * )
SELECT CONGLOMERATENAME FROM SYS.SYSCONGLOMERATES, SYS.SYSCONSTRAINTS WHERE SYS.SYSCONGLOMERATES.TABLEID = SYSCONSTRAINTS.TABLEID AND CONSTRAINTNAME = 'PK_VÔOS'
CREATE INDEX ÍNDICE_ORIGEM ON VÔOS(AEROPORTO_ORIGEM); -- valores monetários são geralmente ordenados do maior para o menor, -- portanto o índice é criado na ordem descendente CREATE INDEX PAG_DESC ON SAMP.EMPREGADOS (SALÁRIO); -- utilizar um tamanho de página maior para o índice CALL SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY('derby.storage.pageSize','8192'); CREATE INDEX IDX_VENDAS ON SAMP.VENDAS (VENDAS); CALL SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY('derby.storage.pageSize',NULL);
CREATE PROCEDURE nome-do-procedimento ( [ parâmetro-do-procedimento [, parâmetro-do-procedimento] ] * ) [ elemento-do-procedimento ] *
{ | [ DYNAMIC ] RESULT SETS INTEGER | LANGUAGE { JAVA } | EXTERNAL NAME cadeia-de-caracteres | PARAMETER STYLE JAVA | { NO SQL | MODIFIES SQL DATA | CONTAINS SQL | READS SQL DATA } }
O nome externo não pode conter espaços.nome_da_classe.nome_do_método
CREATE SCHEMA nome-do-esquema
-- Criar um esquema para as tabelas relacionadas com os empregados CREATE SCHEMA EMP; -- Criar um esquema para as tabelas relacionadas com as linhas aéreas CREATE SCHEMA VÔOS -- Criar uma tabela chamada "disponibilidade" em cada esquema CREATE TABLE VÔOS.DISPONIBILIDADE ( ID_VÔO CHAR(6) NOT NULL, NUM_SEGMENTO INT NOT NULL, DATA_VÔO DATE NOT NULL, ASSENTOS_ECONÔMICOS_OCUPADOS INT, ASSENTOS_EXECUTIVOS_OCUPADOS INT, ASSENTOS_PRIMEIRA_CLASSE_OCUPADOS INT, CONSTRAINT PK_VÔOS_DISPONIBILIDADE PRIMARY KEY (ID_VÔO, NUM_SEGMENTO, DATA_VÔO)); CREATE TABLE EMP.DISPONIBILIDADE ( ID_HOTEL INT NOT NULL, DATA_RESERVA DATE NOT NULL, QUARTOS_OCUPADOS INT, CONSTRAINT PK_HOTEL_DISPONIBILIDADE PRIMARY KEY (ID_HOTEL, DATA_RESERVA));
Na instrução, nome-do-sinônimo representa o nome do sinônimo sendo atribuído à tabela ou visão de destino, enquanto nome-da-visão e nome-da-tabela representam o nome original da tabela ou visão de destino.CREATE SYNONYM nome-do-sinônimo FOR { nome-da-visão | nome-da-tabela }
CREATE TABLE nome-da-tabela ( {definição-da-coluna | restrição no nível-de-tabela} [ , {definição-da-coluna | restrição no nível-de-tabela} ] * )
CREATE TABLE DISPONIBILIDADE_HOTEL ( ID_HOTEL INT NOT NULL, DATA_RESERVA DATE NOT NULL, QUARTOS_RESERVADOS INT DEFAULT 0, PRIMARY KEY (ID_HOTEL, DATA_RESERVA)); -- A definição de chave primária no nível-de-tabela permite -- incluir duas colunas na definição da chave primária PRIMARY KEY (ID_HOTEL, DATA_RESERVA)) -- Atribuir um atributo de coluna de identidade a uma coluna INTEGER, -- e também definir uma restrição de chave primária na coluna CREATE TABLE PESSOAS ( ID_PESSOA INT NOT NULL GENERATED ALWAYS AS IDENTITY CONSTRAINT PK_PESSOAS PRIMARY KEY, PESSOA VARCHAR(26)); -- Atribuir um atributo de coluna de identidade a uma coluna SMALLINT -- com valor inicial igual a 5 e valor do incremento igual a 5. CREATE TABLE GRUPOS ( ID_GRUPO SMALLINT NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 5, INCREMENT BY 5), ENDEREÇO VARCHAR(100), TEL VARCHAR(15));
nome-de-coluna-simplestipo-de-dado [ restrição no nível-de-coluna ]* [ [ WITH ] DEFAULT { expressão-constante | NULL } |especificação-de-coluna-gerada ] [ restrição no nível-de-coluna ]*
[ GENERATED { ALWAYS | BY DEFAULT } AS IDENTITY [ ( START WITH ConstanteInteira [ ,INCREMENT BY ConstanteInteira] ) ] ] ]
• | SMALLINT | |
• | INT | |
• | BIGINT |
Os valores gerados automaticamente na coluna de identidade GENERATED ALWAYS são únicos. A criação de uma coluna de identidade não cria um índice para a coluna.CREATE TABLE SAUDAÇÕES ( I INT GENERATED ALWAYS AS IDENTITY, CH CHAR(50)); INSERT INTO SAUDAÇÕES VALUES (DEFAULT, 'alô'); INSERT INTO SAUDAÇÕES(CH) VALUES ('bom dia');
Deve ser observado que ao contrário das colunas GENERATED ALWAYS, as colunas GENERATED BY DEFAULT não garantem unicidade. Portanto, no exemplo acima as linhas olá e salut possuem o valor de identidade igual a "1", porque a coluna gerada começa por "1" e o valor especificado pelo usuário também é "1". Para não permitir duplicidade, especialmente ao carregar ou importar dados, a tabela deve ser criada utilizando um valor para START WITH correspondente ao primeiro valor de identidade que o sistema deve atribuir. Para verificar esta condição e não permiti-la, pode ser utilizada uma chave primária ou restrição de unicidade na coluna de identidade GENERATED BY DEFAULT.CREATE TABLE SAUDAÇÕES ( I INT GENERATED BY DEFAULT AS IDENTITY, CH CHAR(50)); -- especificar o valor "1": INSERT INTO SAUDAÇÕES VALUES (1, 'olá'); -- usar o padrão gerado INSERT INTO SAUDAÇÕES VALUES (DEFAULT, 'salut'); -- usar o padrão gerado INSERT INTO SAUDAÇÕES(CH) VALUES ('bonjour');
Tipo de dado | Valor máximo | Valor mínimo |
SMALLINT | 32.767 (java.lang.Short.MAX_VALUE) | -32.768 (java.lang.Short.MIN_VALUE) |
INT | 2.147.483.647 (java.lang.Integer.MAX_VALUE) | -2.147.483.648 (java.lang.Integer.MIN_VALUE) |
BIGINT | 9.223.372.036.854.775.807 (java.lang.Long.MAX_VALUE) | -9.223.372.036.854.775.808 (java.lang.Long.MIN_VALUE) |
CREATE TABLE SAUDAÇÕES ( I INT GENERATED BY DEFAULT AS IDENTITY (START WITH 2, INCREMENT BY 1), CH CHAR(50)); -- especificar o valor "1": INSERT INTO SAUDAÇÕES VALUES (1, 'olá'); -- usar o valor gerado INSERT INTO SAUDAÇÕES VALUES (DEFAULT, 'salut'); -- usar o valor gerado INSERT INTO SAUDAÇÕES(CH) VALUES ('bonjour');
CREATE TRIGGER nome-do-gatilho { AFTER | NO CASCADE BEFORE } { INSERT | DELETE | UPDATE } [ OF nome-da-coluna [, nome-da-coluna]* ] ON nome-da-tabela [ CláusulaReferência ] FOR EACH { ROW | STATEMENT } MODE DB2SQL Instrução-SQL-engatilhada
• | Os gatilhos BEFORE disparam antes das modificações da instrução
serem aplicadas, e antes de qualquer restrição ser aplicada.
Os gatilhos para antes podem ser tanto de linha quanto de instrução
(consulte Gatilhos de instrução versus gatilhos de linha). | |
• | Os gatilhos AFTER disparam após todas as restrições terem sido
satisfeitas, e após todas as alterações terem sido aplicadas à tabela de destino.
Os gatilhos AFTER podem ser tanto de linha quanto de instrução
(consulte Gatilhos de instrução versus gatilhos de linha). |
• | INSERT | |
• | UPDATE | |
• | DELETE |
REFERENCING OLD AS LINHA_APAGADA
DELETE FROM DISPONIBILIDADE_HOTEL WHERE ID_HOTEL = LINHA_APAGADA.ID_HOTEL
REFERENCING OLD_TABLE AS HOTÉIS_EXCLUÍDOS
DELETE FROM DISPONIBILIDADE_HOTEL WHERE ID_HOTEL IN (SELECT ID_HOTEL FROM HOTÉIS_EXCLUÍDOS)
• | gatilho de instrução O gatilho de instrução dispara uma vez por evento de gatilho,
independentemente de alguma linha ser modificada pelo evento de inserção,
atualização ou exclusão. | |
• | gatilho de linha O gatilho de linha dispara uma vez para cada linha afetada pelo evento de
gatilho.
Se nenhuma linha for afetada, o gatilho não vai disparar. |
• | Não pode conter parâmetros dinâmicos (?). | |
• | Não pode criar, alterar ou remover a tabela para a qual o gatilho
está definido. | |
• | Não pode adicionar ou remover um índice na tabela para a qual o gatilho
está definido. | |
• | Não pode adicionar ou remover um gatilho na tabela para a qual o gatilho
está definido. | |
• | Não pode efetivar ou desfazer a transação corrente, ou mudar o nível de
isolamento. | |
• | Não pode executar a instrução CALL. | |
• | Os gatilhos para antes não podem possuir instruções INSERT, UPDATE ou DELETE
como sua ação. |
• | Dispara os gatilhos NO CASCADE BEFORE. | |
• | Realiza a verificação das restrições (verifica chave primária, chave única
e chave estrangeira). | |
• | Realiza a inserção, atualização ou exclusão. | |
• | Dispara os gatilhos AFTER. |
-- Instruções e gatilhos: CREATE TRIGGER T1 NO CASCADE BEFORE UPDATE ON X FOR EACH ROW MODE DB2SQL values app.notifyEmail('Jerry', 'A tabela x está para ser atualizada'); CREATE TRIGGER EXCLUI_VÔOS AFTER DELETE ON VÔOS REFERENCING OLD_TABLE AS VÔOS_EXCLUÍDOS FOR EACH STATEMENT MODE DB2SQL DELETE FROM VÔOS_DISPONIBILIDADE WHERE ID_VÔO IN (SELECT ID_VÔO FROM VÔOS_EXCLUÍDOS); CREATE TRIGGER EXCLUI_VÔOS3 AFTER DELETE ON VÔOS REFERENCING OLD AS OLD FOR EACH ROW MODE DB2SQL DELETE FROM VÔOS_DISPONIBILIDADE WHERE ID_VÔO = OLD.ID_VÔO;
CREATE VIEW nome-da-visão [ ( nome-de-coluna-simples [, nome-de-coluna-simples] * ) ] AS Consulta
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;
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;
SELECT * FROM V1
DROP FUNCTION nome-da-função
DROP PROCEDURE nome-do-procedimento
DROP SCHEMA nome-do-esquema RESTRICT
RENAME TABLE nome-da-tabela TO novo-nome-da-tabela
RENAME TABLE SAMP.ATIV_EMP TO ATIVIDADES_EMPREGADOS
SET [CURRENT] SCHEMA [=] { nome-do-esquema| USER | ? | '<constante-cadeia-de-caracteres>' } | SET CURRENT SQLID [=] { nome-do-esquema| USER | ? | '<constante-cadeia-de-caracteres>' }
-- 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
• |
restrição no nível-de-coluna
As restrições no nível-de-coluna fazem referência a uma única coluna
da tabela, e não especificam o nome da coluna (exceto as restrições de
verificação).
Se referem à coluna a qual seguem. | |
• |
restrição no nível-de-tabela
As restrições no nível-de-tabela fazem referência a uma ou mais colunas da
tabela.
As restrições no nível-de-tabela especificam os nomes das colunas às quais se
aplicam.
As restrições de verificação (CHECK) no nível de tabela podem fazer referência a
zero ou mais colunas da tabela. |
• | NOT NULL
Especifica que a coluna não pode conter valores nulos (não pode ser dado nome
a restrições deste tipo). | |
• | PRIMARY KEY
Especifica a coluna que identifica unicamente uma linha da tabela.
A coluna identificada deve ser definida como NOT NULL. Note: Se for tentado adicionar uma chave primária utilizando a instrução
ALTER TABLE, e alguma coluna incluída na chave primária contiver valores
nulos, será gerado um erro e a chave primária não será adicionada.
Para obter mais informações deve ser consultada a
Instrução ALTER TABLE. | |
• | UNIQUE
Especifica que os valores na coluna devem ser únicos.
Não são permitidos valores nulos. | |
• | FOREIGN KEY
Especifica que os valores na coluna devem corresponder a valores em uma
coluna de chave primária ou de chave única referenciada, ou que são nulos. | |
• | CHECK
Especifica regras para os valores da coluna. |
• | PRIMARY KEY
Especifica a coluna ou colunas que identificam unicamente uma linha da
tabela.
Não são permitidos valores nulos. | |
• | UNIQUE
Especifica que os valores nas colunas devem ser únicos.
As colunas identificadas devem ser definidas como NOT NULL. | |
• | FOREIGN KEY
Especifica que os valores nas colunas devem corresponder a valores em
colunas de uma chave primária ou chave única referenciada, ou que são nulos. Note: Se a chave estrangeira for formada por várias colunas, e se
alguma coluna for nula, toda a chave será considerada nula.
A inserção será permitida não importando o que esteja presente nas colunas
não-nulas. | |
• | CHECK
Especifica diversas regras para os valores na tabela. |
• | Parâmetros dinâmicos (?) | |
• | Funções de Data/Hora (CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP) | |
• | Subconsultas | |
• | Funções de usuário (tal como USER, SESSION_USER, CURRENT_USER) |
• | Se a regra de exclusão for RESTRICT ou NO ACTION, a tabela dependente
estará envolvida na operação, mas não será afetada pela operação (ou seja, o
Derby
verificará os valores na tabela, mas não excluirá qualquer valor). | |
• | Se a regra de exclusão for SET NULL, as linhas da tabela dependente poderão
ser atualizadas quando uma linha da tabela mãe for objeto de uma exclusão ou
de uma operação de exclusão propagada. | |
• | Se a regra de exclusão for CASCADE, as linhas da tabela dependente poderão
ser excluídas quando a tabela mãe for objeto de uma exclusão. | |
• | Se a tabela dependente também for uma tabela mãe, as ações descritas nesta
lista serão aplicadas, por sua vez, às suas tabelas dependentes. |
-- restrição de chave primária no nível-de-coluna chamada PK_SAÍDA: CREATE TABLE SAMP.CAIXA_SAÍDA ( ENVIO TIMESTAMP, DESTINO CHAR(8), ASSUNTO CHAR(64) NOT NULL CONSTRAINT PK_CAIXA_SAÍDA PRIMARY KEY, TEXTO_NOTA VARCHAR(3000) ); -- a definição de chave primária no nível-de-tabela permite -- incluir duas colunas na definição da chave primária: CREATE TABLE SAMP.AGENDA ( COD_CLASSE CHAR(7) NOT NULL, DIA SMALLINT NOT NULL, INÍCIO TIME, FIM TIME, PRIMARY KEY (COD_CLASSE, DIA) ); -- Uso de uma restrição no nível-de-coluna para verificação aritmética. -- Uso de uma restrição no nível-de-tabela para ter certeza que os -- impostos do empregado não são maiores que os bônus. CREATE TABLE SAMP.EMP ( NUM_EMP CHAR(6) NOT NULL CONSTRAINT PK_EMP PRIMARY KEY, NOME CHAR(12) NOT NULL, INICIAL_MEIO VARCHAR(12) NOT NULL, SOBRENOME VARCHAR(15) NOT NULL, SALÁRIO DECIMAL(9,2) CONSTRAINT VERIF_SAL CHECK (SALÁRIO >= 10000), BÔNUS DECIMAL(9,2), IMPOSTOS DECIMAL(9,2), CONSTRAINT VERIF_BÔNUS CHECK (BÔNUS > IMPOSTOS) ); -- Uso de uma restrição de verificação para permitir -- apenas as abreviaturas apropriadas para as refeições CREATE TABLE VÔOS ( ID_VÔO CHAR(6) NOT NULL , NÚMERO_SEGMENTO INTEGER NOT NULL , AEROPORTO_ORIGEM CHAR(3), HORA_PARTIDA TIME, AEROPORTO_DESTINO CHAR(3), HORA_CHEGADA TIME, REFEIÇÃO CHAR(1) CONSTRAINT VERIF_REFEIÇÃO CHECK (REFEIÇÃO IN ('B', 'L', 'D', 'S')), PRIMARY KEY (ID_VÔO, NÚMERO_SEGMENTO) ); CREATE TABLE METROPOLITANO ( ID_HOTEL INT NOT NULL CONSTRAINT PK_HOTÉIS PRIMARY KEY, NOME_HOTEL VARCHAR(40) NOT NULL, ID_CIDADE INT CONSTRAINT FK_METRO REFERENCES CIDADES ); -- criação de uma tabela com uma restrição de chave primária -- e uma restrição de chave estrangeira no nível-de-tabela CREATE TABLE VÔOS_DISP ( ID_VÔO CHAR(6) NOT NULL, NÚMERO_SEGMENTO INT NOT NULL, DATA_VÔO DATE NOT NULL, ASSENTOS_ECONÔMICOS_OCUPADOS INT, ASSENTOS_EXECUTIVOS_OCUPADOS INT, ASSENTOS_PRIMEIRA_CLASSE_OCUPADOS INT, CONSTRAINT PK_VÔOS_DISP PRIMARY KEY (ID_VÔO, NÚMERO_SEGMENTO), CONSTRAINT FK_VÔOS FOREIGN KEY (ID_VÔO, NÚMERO_SEGMENTO) REFERENCES VÔOS (ID_VÔO, NÚMERO_SEGMENTO) ); -- adicionar uma restrição de unicidade a uma coluna ALTER TABLE SAMP.PROJETO ADD CONSTRAINT UNQ_PROJ UNIQUE (NOME_PROJ); -- criar uma tabela cuja coluna ID_CIDADE faça referência -- à chave primária da tabela CIDADES utilizando uma -- restrição de chave estrangeira no nível-de-coluna CREATE TABLE CONDOMÍNIOS ( ID_COND INT NOT NULL CONSTRAINT PK_HOTÉIS PRIMARY KEY, NOME_COND VARCHAR(40) NOT NULL, ID_CIDADE INT CONSTRAINT FK_CIDADE REFERENCES CIDADES ON DELETE CASCADE ON UPDATE RESTRICT );
{ NOT NULL | [ [CONSTRAINT nome-da-restrição] { CHECK (CondiçãoProcura) | { PRIMARY KEY | UNIQUE | REFERENCES cláusula } } }
[CONSTRAINT nome-da-restrição] { CHECK (CondiçãoProcura) | { PRIMARY KEY ( nome-de-coluna-simples [ , nome-de-coluna-simples ]* ) | UNIQUE ( nome-de-coluna-simples [ , nome-de-coluna-simples ]* ) | FOREIGN KEY ( nome-de-coluna-simples [ , nome-de-coluna-simples ]* ) REFERENCES cláusula } }
REFERENCES nome-da-tabela [ ( nome-de-coluna-simples [ , nome-de-coluna-simples ]* ) ] [ ON DELETE {NO ACTION | RESTRICT | CASCADE | SET NULL}] [ ON UPDATE {NO ACTION | RESTRICT }] | [ ON UPDATE {NO ACTION | RESTRICT }] [ ON DELETE {NO ACTION | RESTRICT | CASCADE | SET NULL}]
• | a estrutura da tabela não é conhecida antes de utilizar o aplicativo. | |
• | os outros usuários não necessitam da mesma estrutura de tabela. | |
• | os dados da tabela temporária são necessários durante o uso do aplicativo. | |
• | a tabela pode ser declarada e removida sem manter bloqueios no catálogo do sistema. |
DECLARE GLOBAL TEMPORARY TABLE nome-da-tabela { definição-da-coluna [ , definição-da-coluna ] * } [ ON COMMIT {DELETE | PRESERVE} ROWS ] NOT LOGGED [ON ROLLBACK DELETE ROWS]
• | BIGINT | |
• | CHAR | |
• | DATE | |
• | DECIMAL | |
• | DOUBLE PRECISION | |
• | FLOAT | |
• | INTEGER | |
• | NUMERIC | |
• | REAL | |
• | SMALLINT | |
• | TIME | |
• | TIMESTAMP | |
• | VARCHAR |
SET SCHEMA MYAPP; CREATE TABLE T1(C11 INT, C12 DATE); DECLARE GLOBAL TEMPORARY TABLE SESSION.T1(C11 INT) NOT LOGGED; -- A qualificação SESSION é redundante, porque as tabelas temporárias -- somente podem existir no esquema SESSION. DECLARE GLOBAL TEMPORARY TABLE T2(C21 INT) NOT LOGGED; -- A tabela temporária não é qualificada neste caso com SESSION, porque -- as tabelas temporárias somente podem existir no esquema SESSION. INSERT INTO SESSION.T1 VALUES (1); -- Neste caso a qualificação SESSION é obrigatória para utilizar a -- tabela temporária, porque o esquema corrente é MYAPP. SELECT * FROM T1; -- Esta instrução SELECT está fazendo referência à tabela física -- "MYAPP.T1", uma vez que a tabela não foi qualificada com SESSION.
• | IDENTITY opções-de-coluna | |
• | IDENTITY atributo nas opções-de-cópia | |
• | AS (FULLSELECT) DEFINITION ONLY | |
• | NOT LOGGED ON ROLLBACK PRESERVE ROWS | |
• | IN nome-do-espaço-de-tabelas | |
• | PARTITIONING KEY | |
• | WITH REPLACE |
• | ALTER TABLE | |
• | CREATE SYNONYM | |
• | CREATE TRIGGER | |
• | CREATE VIEW | |
• | LOCK | |
• | RENAME |
• | BLOB | |
• | CLOB | |
• | LONG VARCHAR |
• | índices | |
• | sinônimos, gatilhos e visões em tabelas no esquema SESSION
(incluindo as tabelas físicas e as tabelas temporárias) | |
• | LOCK TABLE | |
• | restrições e chaves primárias | |
• | especificação-de-coluna-gerada | |
• | importação em tabelas temporárias |
{ DELETE FROM nome-da-tabela [WHERE cláusula] | DELETE FROM nome-da-tabela WHERE CURRENT OF }
DELETE FROM SAMP.CAIXA_ENTRADA; stmt.executeUpdate("DELETE FROM SAMP.CAIXA_ENTRADA WHERE CURRENT OF " + resultSet.getCursorName())
FOR { READ ONLY | FETCH ONLY | UPDATE [ OF nome-de-coluna-simples [ , nome-de-coluna-simples]* ] }
SELECT CIDADES.ID_CIDADE FROM CIDADES WHERE ID_CIDADE < 5 -- outros tipos de ExpressãoTabela SELECT TABLENAME, ISINDEX FROM SYS.SYSTABLES T, SYS.SYSCONGLOMERATES C WHERE T.TABLEID = C.TABLEID ORDER BY TABLENAME, ISINDEX; -- forçar a ordem de junção SELECT * FROM VÔOS, VÔOS_DISPONIBILIDADE WHERE VÔOS_DISPONIBILIDADE.ID_VÔO = VÔOS.ID_VÔO AND VÔOS_DISPONIBILIDADE.NÚMERO_SEGMENTO = VÔOS.NÚMERO_SEGMENTO AND VÔOS.ID_VÔO < 'AA1115' -- a ExpressãoTabela pode ser uma OperaçãoJunção. Portanto, -- podem haver várias operações de junção na cláusula FROM SELECT PAÍSES.PAÍS, CIDADES.NOME_CIDADE, VÔOS.AEROPORTO_DESTINO FROM PAÍSES LEFT OUTER JOIN CIDADES ON PAÍSES.COD_ISO_PAÍS = CIDADES.COD_ISO_PAÍS LEFT OUTER JOIN VÔOS ON CIDADES.AEROPORTO = VÔOS.AEROPORTO_DESTINO;
GROUP BY nome-da-coluna [ , nome-da-coluna ] *
-- calcular o TEMPO_VÔO médio agrupado por aeroporto SELECT AVG (TEMPO_VÔO), AEROPORTO_ORIGEM FROM VÔOS GROUP BY AEROPORTO_ORIGEM SELECT MAX(CIDADE), REGIÃO FROM CIDADES, PAÍSES WHERE CIDADES.COD_ISO_PAÍS = PAÍSES.COD_ISO_PAÍS GROUP BY REGIÃO -- agrupar por um SMALLINT SELECT ID, AVG(SALÁRIO) FROM SAMP.EQUIPES GROUP BY ID -- Obter as colunas SALÁRIO_MÉDIO, NUM_EMP e NUM_DEP -- utilizando a cláusula AS -- Agrupar pela coluna DEP_TRAB utilizando o nome de -- correlação OUTROS SELECT OUTROS.DEP_TRAB AS NUM_DEP, AVG(OUTROS.SALÁRIO) AS SALÁRIO_MÉDIO, COUNT(*) AS NUM_EMP FROM SAMP.EMPREGADOS OUTROS GROUP BY OUTROS.DEP_TRAB;
HAVING CondiçãoProcura
-- SELECT COUNT(*) -- FROM SAMP.EQUIPES -- GROUP BY ID -- HAVING SALÁRIO > 15000;
-- Descobrir o número total de assentos econômicos -- ocupados no vôo, agrupado por linha aérea, -- somente quando o grupo possuir pelo menos 2 linhas. SELECT SUM(ASSENTOS_ECONÔMICOS_OCUPADOS), LINHA_AÉREA_CHEIA FROM VÔOS_DISPONIBILIDADE, LINHAS_AÉREAS WHERE SUBSTR(VÔOS_DISPONIBILIDADE.ID_VÔO, 1, 2) = LINHA_AÉREA GROUP BY LINHA_AÉREA_CHEIA HAVING COUNT(*) > 1
ExpressãoTabela [ INNER ] JOIN ExpressãoTabela { ON ExpressãoBooleana }
SELECT * FROM SAMP.EMPREGADOS INNER JOIN SAMP.EQUIPES ON EMPREGADOS.SALÁRIO < EQUIPES.SALÁRIO;
-- Junção das tabelas ATIV_EMP e EMPREGADOS -- selecionar todas as colunas da tabela ATIV_EMP e -- adicionar o sobrenome do empregado (ÚLTIMO_NOME) da tabela -- EMPREGADOS a todas as linhas do resultado SELECT SAMP.ATIV_EMP.*, ÚLTIMO_NOME FROM SAMP.ATIV_EMP JOIN SAMP.EMPREGADO ON ATIV_EMP.NUM_EMP = EMPREGADOS.NUM_EMP; -- Juntar as tabelas EMPREGADOS e DEPARTAMENTOS, -- selecionar o número do empregado (NUM_EMP), -- o sobrenome do empregado (ÚLTIMO_NOME), -- o número do departamento (DEP_TRAB na tabela EMPREGADOS e -- NUM_DEP na tabela DEPARTAMENTOS) -- e o nome do departamento (NOME_DEP) -- de todos os empregados nascidos (DATA_NASC) antes de 1930. SELECT NUM_EMP, ÚLTIMO_NOME, DEP_TRAB, NOME_DEP FROM SAMP.EMPREGADOS JOIN SAMP.DEPARTAMENTOS ON DEP_TRAB = NUM_DEP AND YEAR(DATA_NASC) < 1930; -- Outro exemplo de "gerar" novos valores de dado, -- utilizando uma consulta que seleciona da cláusula VALUES -- (que é uma forma alternativa de FULLSELECT). SELECT * FROM (VALUES (3, 4), (1, 5), (2, 6)) AS TABELA1_VALORES(C1, C2) JOIN (VALUES (3, 2), (1, 2),(0, 3)) AS TABELA2_VALORES(C1, C2) ON TABELA1_VALORES.C1 = TABELA2_VALORES.C1; O que resulta em: C1 |C2 |C1 |2 ----------------------------------------------- 3 |4 |3 |2 1 |5 |1 |2 -- Listar todos os departamentos, juntamente com o -- número do empregado e o último nome do gerente SELECT NUM_DEP, NOME_DEP, NUM_EMP, ÚLTIMO_NOME FROM DEPARTAMENTOS INNER JOIN EMPREGADOS ON NUM_GER = NUM_EMP; -- Listar todos os números do empregado e último nome, juntamente -- com o número do empregado e último nome de seus gerentes SELECT E.NUM_EMP, E.ÚLTIMO_NOME, M.NUM_EMP, M.ÚLTIMO_NOME FROM EMPREGADOS E INNER JOIN DEPARTAMENTOS INNER JOIN EMPREGADOS M ON NUM_GER = M.NUM_EMP ON E.DEP_TRAB = NUM_DEP;
INSERT INTO nome-da-tabela [ (nome-de-coluna-simples [ , nome-de-coluna-simples]* ) ] Consulta
• | uma ExpressãoSeleção | |
• | uma lista VALUES | |
• | uma expressão VALUES de várias linhas
As listas de uma única linha e de várias linhas podem incluir a palavra chave
DEFAULT.
A especificação de DEFAULT para uma coluna insere o valor padrão da coluna na
coluna.
Outra forma de inserir o valor padrão na coluna é omitir a coluna na lista
de colunas, e somente inserir valores nas outras colunas da tabela.
Para obter mais informações deve ser consultado
VALUES Expressão. | |
• | expressões UNION |
INSERT INTO PAÍSES VALUES ('Taiwan', 'TW', 'Ásia'); -- Inserir um novo departamento na tabela DEPARTAMENTOS, -- sem atribuir gerente ao novo departamento INSERT INTO DEPARTAMENTOS (NUM_DEP, NOME_DEP, ADMRDEPT) VALUES ('E31', 'ARQUITETURA', 'E01'); -- Inserir dois novos departamentos na tabela DEPARTAMENTOS -- utilizando uma instrução, como no exemplo anterior, -- sem atribuir gerente aos novos departamentos. INSERT INTO DEPARTAMENTOS (NUM_DEP, NOME_DEP, ADMRDEPT) VALUES ('B11', 'COMPRAS', 'B01'), ('E41', 'ADMINISTRAÇÃO DE BANCO DE DADOS', 'E01'); -- Criar a tabela temporária MA_ATIV_EMP com as mesmas -- colunas da tabela ATIV_EMP. -- Carregar a tabela MA_ATIV_EMP com as linhas da tabela ATIV_EMP -- onde o número do projeto (NUM_PROJ) -- começa pelas letras 'MA'. CREATE TABLE MA_ATIV_EMP ( NUM_EMP CHAR(6) NOT NULL, NUM_PROJ CHAR(6) NOT NULL, ACTNO SMALLINT NOT NULL, EMPTIME DEC(5,2), EMSTDATE DATE, EMENDATE DATE ); INSERT INTO MA_ATIV_EMP SELECT * FROM ATIV_EMP WHERE SUBSTR(NUM_PROJ, 1, 2) = 'MA'; -- Inserir o valor DEFAULT para a coluna LOCALIZAÇÃO INSERT INTO DEPARTAMENTOS VALUES ('E31', 'ARQUITETURA', '00390', 'E01', DEFAULT);
Operação de junção
• | INNER JOIN Especifica a junção entre duas tabelas com uma cláusula de junção explícita.
Consulte INNER JOIN. | |
• | LEFT OUTER JOIN Especifica a junção entre duas tabelas com uma cláusula de junção explícita,
preservando as linhas sem correspondência da primeira tabela.
Consulte LEFT OUTER JOIN. | |
• | RIGHT OUTER JOIN Especifica a junção entre duas tabelas com uma cláusula de junção explícita,
preservando as linhas sem correspondência da segunda tabela.
Consulte RIGHT OUTER JOIN. |
ExpressãoTabela LEFT [ OUTER ] JOIN ExpressãoTabela { ON ExpressãoBooleana }
--correspondência entre cidades e países SELECT CIDADES.PAÍS, REGIÃO FROM PAÍSES LEFT OUTER JOIN CIDADES ON ID_CIDADE=ID_CIDADE WHERE REGIÃO = 'Ásia'; -- uso da sintaxe sinônimo, LEFT JOIN, para obter exatamente -- os mesmos resultados da exemplo acima SELECT CIDADES.PAÍS, REGIÃO FROM PAÍSES LEFT JOIN CIDADES ON ID_CIDADE=ID_CIDADE WHERE REGIÃO = 'Ásia'; -- Junção das tabelas EMPREGADOS e DEPARTAMENTOS, -- selecionar o número do empregado (NUM_EMP), -- o sobrenome do empregado (ÚLTIMO_NOME), -- o número do departamento (DEP_TRAB na tabela EMPREGADOS e -- NUM_DEP na tabela DEPARTAMENTOS) -- e o nome do departamento (NOME_DEP) -- de todos os empregados nascidos (DATA_NASC) antes de 1930 SELECT NUM_EMP, ÚLTIMO_NOME, DEP_TRAB, NOME_DEP FROM SAMP.EMPREGADOS LEFT OUTER JOIN SAMP.DEPARTAMENTOS ON DEP_TRAB = NUM_DEP AND YEAR(DATA_NASC) < 1930; -- Listar todos os departamentos, juntamente com o -- número do empregado e o último nome do gerente, -- incluindo os departamentos sem gerente SELECT NUM_DEP, NOME_DEP, NUM_EMP, ÚLTIMO_NOME FROM DEPARTAMENTOS LEFT OUTER JOIN EMPREGADOS ON NUM_GER = NUM_EMP;
• | evitar a sobrecarga devido a vários bloqueios na tabela (em outras palavras,
escalada de bloqueio iniciada pelo usuário) | |
• | evitar impasses (deadlocks) |
LOCK TABLE nome-da-tabela IN { SHARE | EXCLUSIVE } MODE
-- bloquear toda a tabela no modo compartilhado -- para evitar um número grande de bloqueios de linha LOCK TABLE VÔOS IN SHARE MODE; SELECT * FROM VÔOS WHERE AEROPORTO_ORIGEM > 'OOO'; -- bloquear toda a tabela no modo exclusivo -- para uma transação que irá atualizar muitas linhas, -- mas onde nenhuma instrução atualizará isoladamente um -- número suficiente de linhas para obter um bloqueio -- da tabela no modo exclusivo. -- No sistema de bloqueio no nível-de-linha, a transação -- iria requerer um número grande de bloqueios e poderia -- causar um impasse. LOCK TABLE DISPONIBILIDADE_HOTEL IN EXCLUSIVE MODE; UPDATE DISPONIBILIDADE_HOTEL SET QUARTOS_RESERVADOS = (QUARTOS_RESERVADOS + 2) WHERE ID_HOTEL = 194 AND DATA_DE_RESERVA = DATE('1998-04-10'); UPDATE DISPONIBILIDADE_HOTEL SET QUARTOS_RESERVADOS = (QUARTOS_RESERVADOS + 2) WHERE ID_HOTEL = 194 AND DATA_DE_RESERVA = DATE('1998-04-11'); UPDATE DISPONIBILIDADE_HOTEL SET QUARTOS_RESERVADOS = (QUARTOS_RESERVADOS + 2) WHERE ID_HOTEL = 194 AND DATA_DE_RESERVA = DATE('1998-04-12'); UPDATE DISPONIBILIDADE_HOTEL SET QUARTOS_RESERVADOS = (QUARTOS_RESERVADOS + 2) WHERE ID_HOTEL = 194 AND DATA_DE_RESERVA = DATE('1998-04-12'); -- se a transação necessitar bloquear a tabela antes de -- atualizá-la, deverá obter um bloqueio exclusivo antes -- de selecionar para evitar impasses. LOCK TABLE PESSOAS IN EXCLUSIVE MODE; SELECT MAX(ID_PESSOA) + 1 FROM PESSOAS; -- INSERT INTO PESSOAS . . .
ORDER BY { nome-da-coluna | PosiçãoColuna } [ ASC | DESC ] [ , nome-da-coluna | PosiçãoColuna [ ASC | DESC ] ] *
{ ( Consulta ) | Consulta INTERSECT [ ALL | DISTINCT ] Consulta | Consulta EXCEPT [ ALL | DISTINCT ] Consulta | Consulta UNION [ ALL | DISTINCT ] Consulta | ExpressãoSeleção | VALUES Expressão }
• | UNION: ( L + R ). | |
• | EXCEPT: o maior entre ( L – R ) e 0 (zero). | |
• | INTERSECT: o menor entre L e R. |
-- Uma expressão de seleção SELECT * FROM ORG; -- uma subconsulta SELECT * FROM (SELECT COD_CLASSE FROM CLASSE_AGENDA) AS CS; -- uma subconsulta SELECT * FROM (SELECT COD_CLASSE FROM CLASSE_AGENDA) AS CS (COD_CLASSE); -- uma união -- retornar todas as linhas das colunas NUM_DEP e GERENTE -- da tabela ORG -- e (1,2) e (3,4) -- NUM_DEP e GERENTE são colunas do tipo SMALLINT. SELECT NUM_DEP, GERENTE FROM ORG UNION ALL VALUES (1,2), (3,4); -- uma expressão de valores VALUES (1,2,3); -- Listar os números dos empregados (NUM_EMP) -- de todos os empregados na tabela EMPREGADOS -- cujo número do departamento (DEP_TRAB) começa por 'E', ou -- quem está alocado a projetos na tabela ATIV_EMP -- cujo número do projetor (NUM_PROJ) é igual a -- 'MA2100', 'MA2110' ou 'MA2112'. SELECT NUM_EMP FROM EMPREGADOS WHERE DEP_TRAB LIKE 'E%' UNION SELECT NUM_EMP FROM ATIV_EMP WHERE NUM_PROJ IN('MA2100', 'MA2110', 'MA2112'); -- Realizar a mesma consulta do exemplo anterior -- e "marcar" as linhas da tabela EMPREGADOS com 'emp' e -- as linhas da tabela ATIV_EMP com 'ativ_emp'. -- Diferentemente do resultado do exemplo anterior, -- esta consulta pode retornar o mesmo NUM_EMP mais de uma vez, -- identificando de que tabela veio pela "marca" associada. SELECT NUM_EMP, 'emp' FROM EMPREGADOS WHERE DEP_TRAB LIKE 'E%' UNION SELECT NUM_EMP, 'ativ_emp' FROM ATIV_EMP WHERE NUM_PROJ IN('MA2100', 'MA2110', 'MA2112'); -- Realizar a mesma consulta do exemplo anterior, -- porém utilizando UNION ALL para que as linhas -- duplicadas não sejam eliminadas. SELECT NUM_EMP FROM EMPREGADOS WHERE DEP_TRAB LIKE 'E%' UNION ALL SELECT NUM_EMP FROM ATIV_EMP WHERE NUM_PROJ IN('MA2100', 'MA2110', 'MA2112'); -- Realizar a mesma consulta do exemplo anterior, -- incluindo dois empregados adicionais que no -- momento não se encontram em nenhuma tabela, -- e marcar estas linhas como "nova". SELECT NUM_EMP, 'emp' FROM EMPREGADOS WHERE DEP_TRAB LIKE 'E%' UNION SELECT NUM_EMP, 'ativ_emp' FROM ATIV_EMP WHERE NUM_PROJ IN('MA2100', 'MA2110', 'MA2112') UNION VALUES ('NEWAAA', 'nova'), ('NEWBBB', 'nova');
ExpressãoTabela RIGHT [ OUTER ] JOIN ExpressãoTabela { ON ExpressãoBooleana }
-- obter todos os países e cidades correspondentes, -- incluindo os países sem nenhuma cidade SELECT NOME_CIDADE, CIDADES.PAÍS FROM CIDADES RIGHT OUTER JOIN PAÍSES ON CIDADES.COD_ISO_PAÍS = PAÍSES.COD_ISO_PAÍS; -- obter todos países da África e as cidades correspondentes, -- incluindo os países sem cidades SELECT NOME_CIDADE, CIDADES.PAÍS FROM CIDADES RIGHT OUTER JOIN PAÍSES ON CIDADES.COD_ISO_PAÍS = PAÍSES.COD_ISO_PAÍS; WHERE PAÍSES.REGIÃO = 'África'; -- uso da sintaxe sinônimo, RIGHT JOIN, para obter exatamente -- os mesmos resultados do exemplo acima SELECT NOME_CIDADE, CIDADES.PAÍS FROM CIDADES RIGHT JOIN PAÍSES ON CIDADES.COD_ISO_PAÍS = PAÍSES.COD_ISO_PAÍS WHERE PAÍSES.REGIÃO = 'África'; -- a ExpressãoTabela pode ser uma OperaçãoJunção. Portanto, -- podem haver várias operações de junção na cláusula FROM -- Listar todos os números e último nome dos empregados, -- juntamente com os números e último nome de seus gerentes SELECT E.NUM_EMP, E.ÚLTIMO_NOME, M.NUM_EMP, M.ÚLTIMO_NOME FROM EMPREGADOS E RIGHT OUTER JOIN DEPARTAMENTOS RIGHT OUTER JOIN EMPREGADOS M ON NUM_GER = M.NUM_EMP ON E.DEP_TRAB = NUM_DEP;
-- a média sempre retorna um único valor, -- portanto a subconsulta é uma SubconsultaEscalar SELECT NOME, COMISS FROM EQUIPE WHERE EXISTS (SELECT AVG(BÔNUS + 800) FROM EMPREGADOS WHERE COMISS < 5000 AND EMPREGADOS.ÚLTIMO_NOME = UPPER(EQUIPES.NOME) ); -- Introduzir uma maneira de "gerar" novos valores de dados, -- utilizando uma consulta que seleciona da cláusula VALUES -- (que é uma forma alternativa de FULLSELECT). -- Esta consulta mostra como pode ser criada uma tabela chamada "X", -- possuindo duas colunas "R1" e "R2" e uma linha de dados. SELECT R1,R2 FROM (VALUES('GRUPO 1','GRUPO 2')) AS X(R1,R2);
SELECT [ DISTINCT | ALL ] ItemSeleção [ , ItemSeleção ]* Cláusula FROM [ Cláusula WHERE] [ Cláusula GROUP BY ] [ Cláusula HAVING ]
{ * | { nome-da-tabela | nome-da-correlação } .* | Expressão [AS nome-de-coluna-simples] }
-- Listar o chefe de cada departamento, -- o número do departamento (DEP_TRAB), -- e o salário médio do departamento (SALÁRIO) -- para todos os departamentos na tabela EMPREGADOS. -- Organizar a tabela de resultado na ordem ascendente -- do salário médio do departamento SELECT DEP_TRAB, AVG(SALÁRIO) FROM EMPREGADOS GROUP BY DEP_TRAB ORDER BY 2;
• | Cláusula FROM | |
• | Cláusula WHERE | |
• | GROUP BY (ou GROUP BY implícito) | |
• | Cláusula HAVING | |
• | Cláusula SELECT |
VALUES CURRENT_TIMESTAMP
• | São tornados disponíveis no ResultSetMetaData do JDBC. | |
• | São utilizados como nomes das colunas na tabela resultante, quando a
ExpressãoSeleção é utilizada como subconsulta de tabela na cláusula
FROM. | |
• | São utilizados na cláusula ORDER BY como nomes de coluna disponíveis
para classificação. |
-- este exemplo mostra SELECT-FROM-WHERE -- com uma cláusula ORDER BY -- e nome-da-correlação para as tabelas SELECT CONSTRAINTNAME, COLUMNNAME FROM SYS.SYSTABLES t, SYS.SYSCOLUMNS col, SYS.SYSCONSTRAINTS cons, SYS.SYSCHECKS checks WHERE t.TABLENAME = 'VÔOS' AND t.TABLEID = col.REFERENCEID AND t.TABLEID = cons.TABLEID AND cons.CONSTRAINTID = checks.CONSTRAINTID ORDER BY CONSTRAINTNAME; -- Este exemplo mostra a utilização da cláusula DISTINCT SELECT DISTINCT NUM_ATIV FROM ATIV_EMP; -- Este exemplo mostra como mudar o nome de uma expressão. -- Utilizando a tabela EMPREGADOS, -- listar o número do departamento (DEP_TRAB) e -- o maior salário do departamento (SALÁRIO) com nome mudado para BOSS -- para todos os departamentos cujo salário máximo seja menor que o -- salário médio de todos os outros departamentos. SELECT DEP_TRAB AS DPT, MAX(SALÁRIO) AS BOSS FROM EMPREGADOS EMP_COR GROUP BY DEP_TRAB HAVING MAX(SALÁRIO) < (SELECT AVG(SALÁRIO) FROM EMPREGADOS WHERE NOT DEP_TRAB = EMP_COR.DEP_TRAB) ORDER BY BOSS;
Consulta [Cláusula ORDER BY] [Cláusula FOR UPDATE] WITH {RR|RS|CS|UR}
-- listar o nome da expressão SALÁRIO+BÔNUS+COMISS -- como PAGAMENTO_TOTAL, -- e ordenar pelo novo nome PAGAMENTO_TOTAL SELECT PRIMEIRO_NOME, SALÁRIO+BÔNUS+COMISS AS PAGAMENTO_TOTAL FROM EMPREGADOS ORDER BY PAGAMENTO_TOTAL; -- criar um cursor atualizável através da cláusula FOR UPDATE -- para atualizar as colunas data de início (PROJ_DATA_INÍCIO) e -- data de término (PROJ_DATA_FIM) da tabela PROJETO SELECT NUM_PROJ, PROJ_DATA_INÍCIO, PROJ_DATA_FIM FROM PROJETO FOR UPDATE OF PROJ_DATA_INÍCIO, PROJ_DATA_FIM; -- definir o nível de isolamento como RR apenas para esta instrução SELECT * FROM VÔOS WHERE ID_VÔO BETWEEN 'AA1111' AND 'AA1112' WITH RR;
• | A instrução SELECT não pode incluir a cláusula ORDER BY. | |||||||||||||
• | A Consulta subjacente deve ser uma
ExpressãoSeleção. | |||||||||||||
• | A ExpressãoSeleção
da Consulta subjacente não pode incluir:
| |||||||||||||
• | A cláusula FROM na Consulta subjacente não pode ter:
|
• | Quando é utilizado
VALUES Expressão
na
SubconsultaTabela,
uma vez que não há outra maneira de atribuir nomes às colunas de
VALUES Expressão. | |
• | Quando os nomes das colunas de outra forma seriam idênticos aos das colunas
de outra tabela; mudar os nomes significa que não é necessário qualificá-los. |
{nome-da-tabela |nome-da-visão} [ [ AS ] nome-da-correlação [ (nome-de-coluna-simples [ , nome-de-coluna-simples]* ) ] ] ]
• | como uma
ExpressãoTabela
em uma Cláusula FROM | |
• | com EXISTS, IN, ou comparações quantificadas. |
-- subconsulta utilizada como ExpressãoTabela na cláusula FROM SELECT TABELA_VÔOS_VIRTUAL.ID_VÔO FROM (SELECT ID_VÔO, AEROPORTO_ORIGEM, AEROPORTO_DESTINO FROM VÔOS WHERE (AEROPORTO_ORIGEM = 'SFO' OR AEROPORTO_DESTINO = 'SCL') ) AS TABELA_VÔOS_VIRTUAL -- subconsulta (VALUES expressão) utilizada como uma ExpressãoTabela -- na cláusula FROM SELECT MINHA_COLUNA1 FROM (VALUES (1, 2), (3, 4)) AS MINHA_TABELA (MINHA_COLUNA1, MINHA_COLUNA2) -- subconsulta com EXISTS SELECT * FROM VÔOS WHERE EXISTS (SELECT * FROM VÔOS WHERE AEROPORTO_DESTINO = 'SFO' AND AEROPORTO_ORIGEM = 'GRU') -- subconsulta usada com IN SELECT ID_VÔO, NÚMERO_SEGMENTO FROM VÔOS WHERE ID_VÔO IN (SELECT ID_VÔO FROM VÔOS WHERE AEROPORTO_ORIGEM = 'SFO' OR AEROPORTO_DESTINO = 'SCL') -- subconsulta utilizada com uma comparação quantificada SELECT NOME, COMISS FROM EQUIPES WHERE COMISS > (SELECT AVG(BÔNUS + 800) FROM EMPREGADOS WHERE COMISS < 5000);
{ UPDATE nome-da-tabela SET nome-da-coluna = Valor [ , nome-da-coluna = Valor} ]* [Cláusula WHERE] | UPDATE nome-da-tabela SET nome-da-coluna = Valor [ , nome-da-coluna = Valor ]* WHERE CURRENT OF }
-- Todos os empregados, exceto o gerente, -- do departamento (DEP_TRAB) 'E21' foram temporariamente -- reatribuídos. Indique isto alterando seus cargos (CARGO) -- para NULL, e os valores de seus pagamentos (SALÁRIO, BÔNUS, COMISS) -- para zero, na tabela EMPREGADOS. UPDATE EMPREGADOS SET CARGO=NULL, SALÁRIO=0, BÔNUS=0, COMISS=0 WHERE DEP_TRAB = 'E21' AND CARGO <> 'GERENTE' -- Promover o cargo (CARGO) de determinado empregado para GERENTE UPDATE EMPREGADOS SET CARGO = 'GERENTE' WHERE CURRENT OF CURS1; -- Multiplicar a equipe do projeto (PROJ_EQUIPE) por 1.5 stmt.executeUpdate("UPDATE PROJETO SET PROJ_EQUIPE = " "PROJ_EQUIPE * 1.5" + "WHERE CURRENT OF" + ResultSet.getCursorName()); -- Alterar o cargo (CARGO) do empregado número (NUM_EMP) '000290' -- na tabela EMPREGADOS para o seu valor DEFAULT que é NULL UPDATE EMPREGADOS SET CARGO = DEFAULT WHERE NUM_EMP = '000290';
-- 3 linhas de 1 coluna VALUES (1),(2),(3); -- 3 linhas de 1 coluna VALUES 1, 2, 3; -- 1 linha de 3 colunas VALUES (1, 2, 3); -- 3 linhas de 2 colunas VALUES (1,21),(2,22),(3,23); -- construção de uma tabela derivada VALUES ('laranja', 'laranja'), ('maçã', 'vermelha'), ('banana', 'amarela') -- Inserir dois novos departamentos na tabela DEPARTAMENTOS -- utilizando uma instrução, mas não atribuir gerente -- aos novos departamentos. INSERT INTO DEPARTAMENTOS (NUM_DEP, NOME_DEP, ADMRDEPT) VALUES ('B11', 'COMPRAS', 'B01'), ('E41', 'ADMINISTRAÇÃO DE BANCO DE DADOS', 'E01') -- inserir uma linha com valor DEFAULT para a coluna PROJ_PRINC INSERT INTO PROJETO (NUM_PROJ, NOME_PROJ, NUM_DEP, EMP_RESP, PROJ_DATA_INÍCIO, PROJ_PRINC) VALUES ('PL2101', 'ENSURE COMPAT PLAN', 'B01', '000020', CURRENT_DATE, DEFAULT); -- utilização de função nativa VALUES CURRENT_DATE -- obter o valor a partir de uma expressão arbitrária VALUES (3*29, 26.0E0/3) -- obter o valor retornado por uma função nativa VALUES CHAR(1)
WHERE Expressão booleana
-- descobrir os vôos onde nenhum assento da -- classe executiva foi reservado SELECT * FROM DISPONIBILIDADE_VÔO WHERE ASSENTOS_EXECUTIVOS_OCUPADOS IS NULL OR ASSENTOS_EXECUTIVOS_OCUPADOS = 0 -- Junção das tabelas ATIV_EMP e EMPREGADOS -- selecionar todas as colunas da tabela ATIV_EMP, e adicionar o -- sobrenome do empregado (ÚLTIMO_NOME) da tabela EMPREGADOS -- a todas as linhas do resultado. SELECT SAMP.ATIV_EMP.*, ÚLTIMO_NOME FROM SAMP.ATIV_EMP, SAMP.EMPREGADOS WHERE ATIV_EMP.NUM_EMP = EMPREGADOS.NUM_EMP; -- Determinar o número do empregado e o salário dos representantes de venda -- junto com o salário médio e a conta principal de seus departamentos. -- Esta consulta deverá criar primeiro um novo-nome-de-coluna especificado -- na cláusula AS, que está fora do FULLSELECT (DINFO), -- para obter as colunas SALÁRIO_MÉDIO e CONTA_EMP, -- assim como a coluna NUM_DEP utilizada na cláusula WHERE SELECT THIS_EMP.NUM_EMP, THIS_EMP.SALÁRIO, DINFO.SALÁRIO_MÉDIO, DINFO.CONTA_EMP FROM EMPREGADOS THIS_EMP, (SELECT OUTROS.DEP_TRAB AS NUM_DEP, AVG(OUTROS.SALÁRIO) AS SALÁRIO_MÉDIO, COUNT(*) AS CONTA_EMP FROM EMPREGADOS OUTROS GROUP BY OUTROS.DEP_TRAB ) AS DINFO WHERE THIS_EMP.CARGO = 'REP_VENDAS' AND THIS_EMP.DEP_TRAB = DINFO.NUM_DEP;
Statement s = conn.createStatement(); s.setCursorName("ResultadosLinhasAereas"); ResultSet rs = conn.executeQuery( "SELECT LINHAS_AÉREA, TARIFA_BÁSICA " + "FROM LINHAS_AÉREAS FOR UPDATE OF TARIFA_BÁSICA"); Statement s2 = conn.createStatement(); s2.executeUpdate("UPDATE LINHAS_AÉREAS SET TARIFA_BÁSICA = TARIFA_BÁSICA " + "+ .25 WHERE CURRENT OF ResultadosLinhasAereas");
' | Todos os tipos | Tipos de dado numéricos nativos |
COUNT | X | X |
MIN | ' | X |
MAX | ' | X |
AVG | ' | X |
SUM | ' | X |
• | No ItemSeleção da
ExpressãoSeleção. | |
• | Na Cláusula HAVING. | |
• | Na Cláusula ORDER BY
(utilizando um nome aliás) se a agregação aparecer no resultado do bloco de
consulta relevante.
Ou seja, é permitido um aliás para uma agregação na
Cláusula ORDER BY se,
e somente se, a agregação aparecer no ItemSeleção da
ExpressãoSeleção. |
-- inválido SELECT MIN(TEMPO_VÔO), ID_VÔO FROM VÔOS
SELECT c1 FROM t1 GROUP BY c1 HAVING c2 > (SELECT t2.x FROM t2 WHERE t2.y = SUM(t1.c3))
AVG ( [ DISTINCT | ALL ] Expressão )
SELECT AVG (DISTINCT TEMPO_VÔO), SUM (DISTINCT MILHAS) FROM VÔOS
SELECT AVG(C1) FROM (VALUES (1), (1), (1), (1), (2)) AS MINHA_TABELA (C1)
SELECT AVG(CAST (C1 AS DOUBLE PRECISION)) FROM (VALUES (1), (1), (1), (1), (2)) AS MINHA_TABELA (c1)
BIGINT (ExpressãoCaractere | ExpressãoNumérica )
CAST ( [ Expressão | NULL | ? ] AS TipoDado)
Tipos |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SMALLINT | S | S | S | S | S | S | S | S | - | - | - | - | - | - | - | - | - | - |
INTEGER | S | S | S | S | S | S | S | S | - | - | - | - | - | - | - | - | - | - |
BIGINT | S | S | S | S | S | S | S | S | - | - | - | - | - | - | - | - | - | - |
DECIMAL | S | S | S | S | S | S | S | S | - | - | - | - | - | - | - | - | - | - |
REAL | S | S | S | S | S | S | S | - | - | - | - | - | - | - | - | - | - | - |
DOUBLE | S | S | S | S | S | S | S | - | - | - | - | - | - | - | - | - | - | - |
FLOAT | S | S | S | S | S | S | S | - | - | - | - | - | - | - | - | - | - | - |
CHAR | S | S | S | S | - | - | - | S | S | S | - | - | - | S | - | S | S | S |
VARCHAR | S | S | S | S | - | - | - | S | S | S | - | - | - | S | - | S | S | S |
LONG VARCHAR | - | - | - | - | - | - | - | S | S | S | - | - | - | S | - | - | - | - |
CHAR FOR BIT DATA | - | - | - | - | - | - | - | - | - | - | S | S | S | S | S | - | - | - |
VARCHAR FOR BIT DATA | - | - | - | - | - | - | - | - | - | - | S | S | S | S | S | - | - | - |
LONG VARCHAR FOR BIT DATA | - | - | - | - | - | - | - | - | - | - | S | S | S | S | S | - | - | - |
CLOB | - | - | - | - | - | - | - | S | S | S | - | - | - | S | - | - | - | - |
BLOB | - | - | - | - | - | - | - | - | - | - | - | - | - | - | S | - | - | - |
DATE | - | - | - | - | - | - | - | S | S | - | - | - | - | - | - | S | - | S |
TIME | - | - | - | - | - | - | - | S | S | - | - | - | - | - | - | - | S | S |
TIME STAMP | - | - | - | - | - | - | - | S | S | - | - | - | - | - | - | S | S | S |
• | numérico
| |||||||
• | cadeia
| |||||||
• |
SELECT CAST (MILHAS AS INT) FROM VÔOS -- converter de carimbo do tempo para texto INSERT INTO MINHA_TABELA (COLUNA_TEXTO) VALUES (CAST (CURRENT_TIMESTAMP AS VARCHAR(100))) -- NULL deve ser convertido para algum tipo de dado para poder ser usado SELECT LINHA_AÉREA FROM LINHAS_AÉREAS UNION ALL VALUES (CAST (NULL AS CHAR(2))) -- conversão de precisão dupla para decimal SELECT CAST (TEMPO_VÔO AS DECIMAL(5,2)) FROM VÔOS -- conversão de SMALLINT para BIGINT VALUES CAST (CAST (12 AS SMALLINT) AS BIGINT)
• | uma cadeia de caracteres, se o primeiro argumento for algum tipo de
cadeia de caracteres. | |
• | um valor data/hora, se o primeiro argumento for DATE, TIME ou TIMESTAMP. | |
• | um número decimal, se o primeiro argumento for um número decimal. | |
• | um número de ponto flutuante de precisão dupla, se o primeiro argumento
for DOUBLE ou REAL. | |
• | um número inteiro, se o primeiro argumento for SMALLINT, INTEGER ou BIGINT. |
CHAR (ExpressãoCaractere [, inteiro] )
CHAR (ExpressãoInteira)
• | Se o primeiro argumento for um SMALLINT: O comprimento do resultado
será igual a 6.
Se o número de caracteres do resultado for menor que 6, então o resultado
será preenchido à direita com brancos até o comprimento 6. | |
• | Se o primeiro argumento for um INTEGER: O comprimento do resultado
será igual 11.
Se o número de caracteres no resultado for menor que 11, então o resultado
será preenchido à direita com brancos até o comprimento 11. | |
• | Se o primeiro argumento for um BIGINT: O comprimento do resultado
será igual a 20.
Se o número de caracteres no resultado for menor que 20, então o resultado
será preenchido à direita com brancos até o comprimento 20. |
CHAR (ExpressãoDataHora)
• | DATE: O resultado é a representação caractere da data.
O comprimento do resultado é 10. | |
• | TIME: O resultado é a representação caractere da hora.
O comprimento do resultado é 8. | |
• | TIMESTAMP: O resultado é a representação caractere do carimbo do
tempo. O comprimento do resultado é 26. |
CHAR (ExpressãoDecimal)
{ { ExpressãoCaractere || ExpressãoCaractere } | { ExpressãoBit || ExpressãoBit } }
A expressão NULLIF é muito semelhante à expressão CASE. Por exemplo:NULLIF(L,R)
equivale à seguinte expressão CASE:NULLIF(V1,V2)
CASE WHEN V1=V2 THEN NULL ELSE V1 END
Se o valor da instância especificada na chamada do método de instância for nulo, o resultado da chamada será nulo (SQL NULL). Entretanto, ainda é necessário utilizar a expressão CASE para uma coluna que pode ter nulo, quando a coluna for o parâmetro de um método primitivo.-- retorna 3 VALUES CASE WHEN 1=1 THEN 3 ELSE 4 END;
COUNT ( [ DISTINCT | ALL ] Expressão )
-- consulta não permitida SELECT COUNT (DISTINCT TEMPO_VÔO), SUM (DISTINCT MILHAS) FROM VÔOS
-- Fazer com que a coluna NOME tenha como valor padrão -- o esquema corrente: CREATE TABLE MINHA_TABELA (ID INT, NOME VARCHAR(128) DEFAULT CURRENT SQLID) -- Inserir o valor padrão igual ao valor do -- esquema corrente na tabela: INSERT INTO MINHA_TABELA(ID) VALUES (1) -- Retornar as linhas com o mesmo nome do esquema corrente: SELECT NOME FROM MINHA_TABELA WHERE NOME = CURRENT SCHEMA
• | Se o argumento for uma data, carimbo do tempo, ou a representação
cadeia de caracteres válida de uma data ou carimbo do tempo:
O resultado será a parte data do valor. | |
• | Se o argumento for um número: O resultado será a data n-1 dia após
1 de janeiro de 0001, onde n é a parte inteira do número. | |
• | Se o argumento for uma cadeia de caracteres com comprimento 7:
O resultado será a data representada pela cadeia de caracteres. |
• | Se o argumento for uma data, carimbo do tempo, ou a representação
cadeia de caracteres válida de uma data ou carimbo do tempo: O resultado
será a parte relativa ao dia do valor, que é um inteiro entre 1 e 31. | |
• | Se o argumento for uma duração de tempo ou duração de carimbo do tempo:
O resultado será a parte relativa ao dia do valor, que é um inteiro entre
-99 e 99.
Um resultado diferente de zero possui o mesmo sinal do argumento. |
• | número, se o argumento for uma expressão numérica. | |
• | representação cadeia de caracteres do número, se o argumento for uma
expressão cadeia de caracteres. |
DOUBLE [PRECISION] (ExpressãoNumérica )
DOUBLE (ExpressãoCadeiaCaracteres )
• | Se o argumento for uma data, carimbo do tempo, ou a representação
cadeia de caracteres válida de uma data ou carimbo do tempo:
O resultado será a parte relativa à hora do valor, que é um inteiro entre
0 e 24. | |
• | Se o argumento for uma duração de hora ou duração de carimbo do tempo:
O resultado será a parte relativa à hora do valor, que é um inteiro entre
-99 e 99.
Um resultado diferente de zero possui o mesmo sinal do argumento. |
• | Uma instrução INSERT de uma única linha com a cláusula VALUES para uma
tabela sem coluna identidade | |
• | Uma instrução INSERT de várias linhas com a cláusula VALUES | |
• | Uma instrução INSERT com um FULLSELECT |
ij> CREATE TABLE T1(C1 INT GENERATED ALWAYS AS IDENTITY, C2 INT); 0 rows inserted/updated/deleted ij> INSERT INTO T1(C2) VALUES (8); 1 row inserted/updated/deleted ij> VALUES IDENTITY_VAL_LOCAL(); 1 ------------------------------- 1 1 row selected ij> SELECT IDENTITY_VAL_LOCAL()+1, IDENTITY_VAL_LOCAL()-1 FROM T1; 1 |2 ------------------------------------------------------------------- 2 |0 1 row selected ij> INSERT INTO T1(C2) VALUES (IDENTITY_VAL_LOCAL()); 1 row inserted/updated/deleted ij> SELECT * FROM T1; C1 |C2 ------------------------------- 1 |8 2 |1 2 rows selected ij> VALUES IDENTITY_VAL_LOCAL(); 1 ------------------------------- 2 1 row selected ij> INSERT INTO T1(C2) VALUES (8), (9); 2 rows inserted/updated/deleted ij> -- inserção de vários valores; -- valor retornado pela função não deve mudar VALUES IDENTITY_VAL_LOCAL(); 1 ------------------------------- 2 1 row selected ij> SELECT * FROM T1; C1 |C2 ------------------------------- 1 |8 2 |1 3 |8 4 |9 4 rows selected ij> INSERT INTO T1(C2) SELECT C1 FROM T1; 4 rows inserted/updated/deleted ij> -- inserção som sub-seleção; -- valor retornado pela função não deve mudar VALUES IDENTITY_VAL_LOCAL(); 1 ------------------------------- 2 1 row selected ij> SELECT * FROM T1; C1 |C2 ------------------------------- 1 |8 2 |1 3 |8 4 |9 5 |1 6 |2 7 |3 8 |4 8 rows selected
INT[EGER] (ExpressãoNumérica | ExpressãoCaractere )
SELECT INTEGER (SALÁRIO / NÍVEL_EDUC), SALÁRIO, NÍVEL_EDUC, NUM_EMP FROM EMPREGADOS ORDER BY 1 DESC
LCASE ou LOWER ( ExpressãoCaractere )
MAX ( [ DISTINCT | ALL ] Expressão )
SELECT COUNT (DISTINCT TEMPO_VÔO), MAX (DISTINCT MILHAS) FROM VÔOS
-- encontrar a data mais tarde da tabela DISPONIBILIDADE_VÔO SELECT MAX (DATA_VÔO) FROM DISPONIBILIDADE_VÔO -- encontrar o vôo mais longo a partir de cada aeroporto, -- mas somente quando o vôo mais longo tiver mais de 10 horas SELECT MAX(TEMPO_VÔO), AEROPORTO_ORIGEM FROM VÔOS GROUP BY AEROPORTO_ORIGEM HAVING MAX(TEMPO_VÔO) > 10
MIN ( [ DISTINCT | ALL ] Expressão )
SELECT COUNT (DISTINCT TEMPO_VÔO), MIN (DISTINCT MILHAS) FROM VÔOS
• | Se o argumento for uma data, carimbo do tempo, ou a representação
cadeia de caracteres válida de uma data ou carimbo do tempo:
O resultado será a parte relativa ao minutos do valor, que é um inteiro entre
0 e 59. | |
• | Se o argumento for uma duração de hora ou duração de carimbo do tempo:
O resultado será a parte relativa aos minutos do valor, que é um inteiro entre
-99 e 99.
Um resultado diferente de zero possui o mesmo sinal do argumento. |
mod(tipo-inteiro, tipo-inteiro)
• | SMALLINT se os dois argumentos forem SMALLINT. | |
• | INTEGER se um dos argumentos for INTEGER e o outro INTEGER ou SMALLINT. | |
• | BIGINT se um dos argumentos for BIGINT e o outro BIGINT, INTEGER ou
SMALLINT. |
• | Se o argumento for uma data, carimbo do tempo, ou a representação
cadeia de caracteres válida de uma data ou carimbo do tempo:
O resultado será a parte relativa ao mês do valor, que é um inteiro entre
1 e 12. | |
• | Se o argumento for uma duração de data ou duração de carimbo do tempo:
O resultado será a parte relativa ao mês do valor, que é um inteiro entre
-99 e 99.
Um resultado diferente de zero possui o mesmo sinal do argumento. |
• | Se o argumento for uma data, carimbo do tempo, ou a representação
cadeia de caracteres válida de uma data ou carimbo do tempo:
O resultado será a parte relativa aos segundos do valor, que é um inteiro entre
0 e 59. | |
• | Se o argumento for uma duração de hora ou duração de carimbo do tempo:
O resultado será a parte relativa aos segundos do valor, que é um inteiro entre
-99 e 99.
Um resultado diferente de zero possui o mesmo sinal do argumento. |
SMALLINT (ExpressãoNumérica | ExpressãoCaractere )
SUBSTR({ ExpressãoCaractere }, PosiçãoInicial [, ComprimentoCadeia ] )
SUM ( [ DISTINCT | ALL ] Expressão )
SELECT AVG (DISTINCT TEMPO_VÔO), SUM (DISTINCT MILHAS) FROM VÔOS
-- descobrir a quantidade de assentos econômicos disponíveis: SELECT SUM (ASSENTOS_ECONÔMICOS) FROM LINHAS_AÉREAS; -- utilizar SUM fazendo referência a várias colunas -- (descobrir o número total de todos os assentos ocupados): SELECT SUM (ASSENTOS_ECONÔMICOS_OCUPADOS + ASSENTOS_EXECUTIVOS_OCUPADOS + ASSENTOS_PRIMEIRA_CLASSE_OCUPADOS) AS ASSENTOS_OCUPADOS FROM VÔOS_DISPONIBILIDADE;
• | Se o argumento for uma hora: O resultado será esta hora. | |
• | Se o argumento for um carimbo do tempo: O resultado será a parte relativa à
hora do carimbo do tempo | |
• | Se o argumento for uma cadeia de caracteres: O resultado será a hora
representada pela cadeia de caracteres |
• | Se for especificado apenas um argumento: Deverá ser um carimbo do tempo, a
representação cadeia de caracteres válida de um carimbo do tempo, ou uma
cadeia de caracteres de comprimento 14, que não seja CLOB nem LONG VARCHAR.
A cadeia de caracteres de comprimento 14 deverá ser uma cadeia de dígitos
representando uma data e hora válida no formato yyyyxxddhhmmss, onde
yyyy é o ano, xx é o mês, dd é o dia, hh é a hora,
mm é o minuto e ss são os segundos. | |
• | Se os dois argumentos forem especificados: O primeiro argumento deverá ser
uma data, ou a representação cadeia de caracteres válida de uma data, e o
segundo argumento deverá ser uma hora, ou a representação cadeia de caracteres
válida de uma hora. |
• | Se os dois argumentos forem especificados: O resultado será um carimbo do
tempo com a data especificada pelo primeiro argumento e a hora especificada
pelo segundo argumento.
A parte relativa aos microssegundos será zero. | |
• | Se for especificado apenas um argumento, e este for um carimbo do tempo:
O resultado será este carimbo do tempo. | |
• | Se for especificado apenas um argumento, e este for uma cadeia de caracteres:
O resultado será o carimbo do tempo representado pela cadeia de caracteres.
Se o argumento for uma cadeia de caracteres de comprimento 14,
o carimbo do tempo terá a parte relativa aos microssegundos igual a zero. |
UCASE ou UPPER ( ExpressãoCaractere )
VARCHAR (ExpressãoCadeiaCaracteres )
• | Se o argumento for uma data, carimbo do tempo, ou a representação
cadeia de caracteres válida de uma data ou carimbo do tempo:
O resultado será a parte relativa ao ano do valor, que é um inteiro entre
1 e 9 999. | |
• | Se o argumento for uma duração de data ou duração de carimbo do tempo:
O resultado será a parte relativa ao ano do valor, que é um inteiro entre
-9 999 e 9 999.
Um resultado diferente de zero possui o mesmo sinal do argumento. |
SYSCS_UTIL.SYSCS_COMPRESS_TABLE (IN SCHEMANAME VARCHAR(128), IN TABLENAME VARCHAR(128), IN SEQUENTIAL SMALLINT)
CALL SYSCS_UTIL.SYSCS_COMPRESS_TABLE('US', 'CLIENTE', 1)
CallableStatement cs = conn.prepareCall ("CALL SYSCS_UTIL.SYSCS_COMPRESS_TABLE(?, ?, ?)"); cs.setString(1, "US"); cs.setString(2, "CLIENTE"); cs.setShort(3, (short) 1); cs.execute();
SYSCS_UTIL.SYSCS_INPLACE_COMPRESS_TABLE( IN SCHEMANAME VARCHAR(128), IN TABLENAME VARCHAR(128), IN PURGE_ROWS SMALLINT, IN DEFRAGMENT_ROWS SMALLINT, IN TRUNCATE_END SMALLINT )
CALL SYSCS_UTIL.SYSCS_INPLACE_COMPRESS_TABLE('US', 'CLIENTE', 1, 1, 1);
CALL SYSCS_UTIL.SYSCS_INPLACE_COMPRESS_TABLE('US', 'CLIENTE', 0, 0, 1);
CallableStatement cs = conn.prepareCall ("CALL SYSCS_UTIL.SYSCS_COMPRESS_TABLE(?, ?, ?, ?, ?)"); cs.setString(1, "US"); cs.setString(2, "CLIENTE"); cs.setShort(3, (short) 1); cs.setShort(4, (short) 1); cs.setShort(5, (short) 1); cs.execute();
CallableStatement cs = conn.prepareCall ("CALL SYSCS_UTIL.SYSCS_COMPRESS_TABLE(?, ?, ?, ?, ?)"); cs.setString(1, "US"); cs.setString(2, "CLIENTE"); cs.setShort(3, (short) 0); cs.setShort(4, (short) 0); cs.setShort(5, (short) 1); cs.execute();
-- estabelecer a conexão -- ligar RUNTIMESTATISTIC para a conexão: CALL SYSCS_UTIL.SYSCS_SET_RUNTIMESTATISTICS(1); -- executar uma consulta complexa -- caminhar pelo conjunto de resultados -- acessar as informações de estatísticas em tempo de execução: CALL SYSCS_UTIL.SYSCS_SET_RUNTIMESTATISTICS(0);
SYSCS_UTIL.SYSCS_GET_DATABASE_PROPERTY(IN KEY VARCHAR(128), IN VALUE VARCHAR(32672))
String diretorio_copias = "c:/minhas_copias/" + JCalendar.getToday(); CallableStatement cs = conn.prepareCall ("CALL SYSCS_UTIL.SYSCS_FREEZE_DATABASE()"); cs.execute(); cs.close(); // código fornecido pelo usuário para fazer a cópia de segurança // completa do "diretorio_copias". // descongelar o banco de dados após a cópia de segurança terminar: CallableStatement cs = conn.prepareCall ("CALL SYSCS_UTIL.SYSCS_UNFREEZE_DATABASE()"); cs.execute(); cs.close();
String diretorio_copias = "c:/minhas_copias/" + JCalendar.getToday(); CallableStatement cs = conn.prepareCall ("CALL SYSCS_UTIL.SYSCS_FREEZE_DATABASE()"); cs.execute(); cs.close(); // código fornecido pelo usuário para fazer a cópia de segurança // completa do "diretorio_copias". // descongelar o banco de dados após a cópia de segurança terminar: CallableStatement cs = conn.prepareCall ("CALL SYSCS_UTIL.SYSCS_UNFREEZE_DATABASE()"); cs.execute(); cs.close();
SYSCS_UTIL.SYSCS_BACKUP_DATABASE(IN BACKUPDIR VARCHAR())
SYSCS_UTIL.SYSCS_EXPORT_TABLE (IN SCHEMANAME VARCHAR(128), IN TABLENAME VARCHAR(128), IN FILENAME VARCHAR(32672), IN COLUMNDELIMITER CHAR(1), IN CHARACTERDELIMITER CHAR(1), IN CODESET VARCHAR(128))
SYSCS_UTIL.SYSCS_EXPORT_QUERY(IN SELECTSTATEMENT VARCHAR(32672), IN FILENAME VARCHAR(32672), IN COLUMNDELIMITER CHAR(1), IN CHARACTERDELIMITER CHAR(1), IN CODESET VARCHAR(128))
SYSCS_UTIL.SYSCS_IMPORT_TABLE (IN SCHEMANAME VARCHAR(128), IN TABLENAME VARCHAR(128), IN FILENAME VARCHAR(32672), IN COLUMNDELIMITER CHAR(1), IN CHARACTERDELIMITER CHAR(1), IN CODESET VARCHAR(128), IN REPLACE SMALLINT)
CALL SYSCS_UTIL.SYSCS_IMPORT_TABLE (null, 'EQUIPE', 'c:/output/meu_arquivo.csv', ';', '%', NULL,0);
SYSCS_UTIL.SYSCS_IMPORT_DATA (IN SCHEMANAME VARCHAR(128), IN TABLENAME VARCHAR(128), IN INSERTCOLUMNS VARCHAR(32672), IN COLUMNINDEXES VARCHAR(32672), IN FILENAME VARCHAR(32672), IN COLUMNDELIMITER CHAR(1), IN CHARACTERDELIMITER CHAR(1), IN CODESET VARCHAR(128), IN REPLACE SMALLINT)
• | |||||||||||
• | Numéricos aproximados, ou de ponto flutuante
| ||||||||||
• |
Maior tipo que aparece na expressão | Tipo do resultado da expressão |
DOUBLE PRECISION | DOUBLE PRECISION |
REAL | DOUBLE PRECISION |
DECIMAL | DECIMAL |
BIGINT | BIGINT |
INTEGER | INTEGER |
SMALLINT | INTEGER |
CREATE TABLE MINHA_TABELA (R REAL, D DOUBLE PRECISION); 0 rows inserted/updated/deleted INSERT INTO MINHA_TABELA (R, D) VALUES (3.4028236E38, 3.4028235E38); ERRO X0X41: O número '3.4028236E38' está fora da faixa para o tipo de dado REAL.
INSERT INTO MINHA_TABELA(COLUNA_INTEIRA) VALUES (1.09e0); 1 row inserted/updated/deleted SELECT coluna_inteira FROM MINHA_TABELA; I --------------- 1
ij> INSERT INTO MINHA_TABELA (COLUNA_DECIMAL) VALUES (55555555556666666666); ERRO X0Y21: O número '55555555556666666666' está fora da faixa do tipo de dado de destino DECIMAL/NUMERIC(5,2).
INSERT INTO MINHA_TABELA (COLUNA_INTEIRA) VALUES 2147483648; ERRO 22003: O valor resultante está fora da faixa para o tipo de dado INTEGER.
• | lp significa a precisão do operando à esquerda | |
• | rp significa a precisão do operando à direita | |
• | ls significa a escala do operando à esquerda | |
• | rs significa a escala do operando à direita |
• | multiplicação ls + rs | |
• | divisão 31 - lp + ls - rs | |
• | AVG() max(max(ls, rs), 4) | |
• | todas as outras max(ls, rs) |
Tipos |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SMALL INT | S | S | S | S | S | S | S | - | - | - | - | - | - | - | - | - | - | - |
INTEGER | S | S | S | S | S | S | S | - | - | - | - | - | - | - | - | - | - | - |
BIGINT | S | S | S | S | S | S | S | - | - | - | - | - | - | - | - | - | - | - |
DECIMAL | S | S | S | S | S | S | S | - | - | - | - | - | - | - | - | - | - | - |
REAL | S | S | S | S | S | S | S | - | - | - | - | - | - | - | - | - | - | - |
DOUBLE | S | S | S | S | S | S | S | - | - | - | - | - | - | - | - | - | - | - |
FLOAT | S | S | S | S | S | S | S | - | - | - | - | - | - | - | - | - | - | - |
CHAR | - | - | - | - | - | - | - | S | S | S | - | - | - | S | - | S | S | S |
VARCHAR | - | - | - | - | - | - | - | S | S | S | - | - | - | S | - | S | S | S |
LONG VARCHAR | - | - | - | - | - | - | - | S | S | S | - | - | - | S | - | - | - | - |
CHAR FOR BIT DATA | - | - | - | - | - | - | - | - | - | - | S | S | S | - | - | - | - | - |
VARCHAR FOR BIT DATA | - | - | - | - | - | - | - | - | - | - | S | S | S | - | - | - | - | - |
LONG VARCHAR FOR BIT DATA | - | - | - | - | - | - | - | - | - | - | S | S | S | - | - | - | - | - |
CLOB | - | - | - | - | - | - | - | S | S | S | - | - | - | S | - | - | - | - |
BLOB | - | - | - | - | - | - | - | - | - | - | - | - | - | - | S | - | - | - |
DATE | - | - | - | - | - | - | - | S | S | - | - | - | - | - | - | S | - | - |
TIME | - | - | - | - | - | - | - | S | S | - | - | - | - | - | - | - | S | - |
TIME STAMP | - | - | - | - | - | - | - | S | S | - | - | - | - | - | - | - | - | S |
Tipos |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SMALL INT | S | S | S | S | S | S | S | - | - | - | - | - | - | - | - | - | - | - |
INTEGER | S | S | S | S | S | S | S | - | - | - | - | - | - | - | - | - | - | - |
BIGINT | S | S | S | S | S | S | S | - | - | - | - | - | - | - | - | - | - | - |
DECIMAL | S | S | S | S | S | S | S | - | - | - | - | - | - | - | - | - | - | - |
REAL | S | S | S | S | S | S | S | - | - | - | - | - | - | - | - | - | - | - |
DOUBLE | S | S | S | S | S | S | S | - | - | - | - | - | - | - | - | - | - | - |
FLOAT | S | S | S | S | S | S | S | - | - | - | - | - | - | - | - | - | - | - |
CHAR | - | - | - | - | - | - | - | S | S | - | - | - | - | - | - | S | S | S |
VARCHAR | - | - | - | - | - | - | - | S | S | - | - | - | - | - | - | S | S | S |
LONG VARCHAR | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - |
CHAR FOR BIT DATA | - | - | - | - | - | - | - | - | - | - | S | S | - | - | - | - | - | - |
VARCHAR FOR BIT DATA | - | - | - | - | - | - | - | - | - | - | S | S | - | - | - | - | - | - |
LONG VARCHAR FOR BIT DATA | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - |
CLOB | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - |
BLOB | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - |
DATE | - | - | - | - | - | - | - | S | S | - | - | - | - | - | - | S | - | - |
TIME | - | - | - | - | - | - | - | S | S | - | - | - | - | - | - | - | S | - |
TIME STAMP | - | - | - | - | - | - | - | S | S | - | - | - | - | - | - | - | - | S |
CREATE TABLE IMAGENS( NOME VARCHAR(32) NOT NULL PRIMARY KEY, IMAGEM BLOB(16M)); -- Encontrar todas as imagens de logotipos SELECT LENGTH(IMAGEM), NOME FROM IMAGENS WHERE NOME LIKE '%logo%'; -- Encontrar todas as imagens duplicadas (comparação de BLOBs) SELECT A.NOME AS DUPLICADA_1, B.NOME AS DUPLICADA_2 FROM IMAGENS AS A, IMAGENS AS B WHERE A.NOME < B.NOME AND A.IMAGEM = B.IMAGEM ORDER BY 1,2;
CHAR[ACTER] [(comprimento)]
{ CHAR | CHARACTER }[(comprimento)] FOR BIT DATA
{CLOB |CHARACTER LARGE OBJECT}(comprimento [{{K |M |G}]))
import java.sql.*; public class clob { public static void main(String[] args) { try { String url = "jdbc:derby:clobberyclob;create=true"; Class.forName("org.apache.derby.jdbc.EmbeddedDriver").newInstance(); Connection conn = DriverManager.getConnection(url); Statement s = conn.createStatement(); s.executeUpdate("CREATE TABLE documents (id INT, text CLOB(64 K))"); conn.commit(); // --- adicionar um arquivo java.io.File file = new java.io.File("asciifile.txt"); int fileLength = (int) file.length(); // - primeiro, criar um fluxo de entrada java.io.InputStream fin = new java.io.FileInputStream(file); PreparedStatement ps = conn.prepareStatement("INSERT INTO documents VALUES (?, ?)"); ps.setInt(1, 1477); // - definir o valor do parâmetro de entrada para o fluxo de entrada ps.setAsciiStream(2, fin, fileLength); ps.execute(); conn.commit(); // --- ler as colunas ResultSet rs = s.executeQuery("SELECT text FROM documents WHERE id = 1477"); while (rs.next()) { java.sql.Clob aclob = rs.getClob(1); java.io.InputStream ip = rs.getAsciiStream(1); int c = ip.read(); while (c > 0) { System.out.print((char)c); c = ip.read(); } System.out.print("\n"); // ... } } catch (Exception e) { System.out.println("Erro! "+e); } } }
O primeiro dos três formatos acima é o formato de java.sql.Date.yyyy-mm-dd mm/dd/yyyy dd.mm.yyyy
{ DECIMAL | DEC } [(precisão [, escala ])]
-- esta conversão perde apenas a precisão fracionária VALUES CAST (1.798765 AS DECIMAL(5,2)); 1 -------- 1.79 -- esta conversão não cabe VALUES CAST (1798765 AS DECIMAL(5,2)); 1 -------- ERRO 22003: O valor resultante está fora da faixa para o tipo de dado DECIMAL/NUMERIC(5,2).
DOUBLE PRECISION
DOUBLE
• | Menor valor DOUBLE: -1.79769E+308 | |
• | Maior valor DOUBLE: 1.79769E+308 | |
• | Menor valor DOUBLE positivo: 2.225E-307 | |
• | Maior valor DOUBLE negativo: -2.225E-307 |
-- este exemplo falha porque a constante é muito longa: VALUES 01234567890123456789012345678901e0;
FLOAT [ (precisão) ]
• | Menor valor REAL: -3.402E+38 | |
• | Maior valor REAL: 3.402E+38 | |
• | Menor valor REAL positivo: 1.175E-37 | |
• | Maior valor REAL negativo: -1.175E-37 |
-- este exemplo falha porque a constante é muito longa: values 01234567890123456789012345678901e0;
O primeiro dos três formatos acima é o formato de java.sql.Time.hh:mm[:ss] hh.mm[.ss] hh[:mm] {AM | PM}
O primeiro dos dois formatos acima é o formato de java.sql.Timestamp.yyyy-mm-dd hh:mm:ss[.nnnnnn] yyyy-mm-dd-hh.mm.ss[.nnnnnn]
{ VARCHAR | CHAR VARYING | CHARACTER VARYING }(comprimento)
{ VARCHAR | CHAR VARYING | CHARACTER VARYING } (comprimento) FOR BIT DATA
• | ||
• | Instrução UPDATE (porção SET) | |
• | ||
• |
' | Tipo da expressão | Explicação |
' | Expressões gerais | Todas as expressões que podem resultar em um valor de qualquer tipo. |
' |
Referência a coluna Permitida na
ExpressãoSeleção,
na instrução UPDATE e na cláusula WHERE das instruções de manipulação de dados. | O nome-da-coluna
que faz referência ao valor da coluna tornado visível para a expressão que
contém a referência a coluna.
O nome-da-coluna deve ser qualificado pelo nome da tabela ou pelo
nome da correlação se houver ambiguidade. O qualificador do
nome-da-coluna
deve ser o nome da correlação, se for atribuído nome de correlação à
tabela na Cláusula FROM.
O nome da tabela não é mais visível como qualificador para nome-da-coluna
após a tabela ter recebido um aliás pelo nome da correlação. |
' | Constante | A maioria dos tipos de dado nativos normalmente possuem
constantes associadas aos mesmos
(conforme mostrado em Tipos de dado).
|
' | NULL Permitido nas expressões CAST, na lista de valores do INSERT, e na
cláusula SET do UPDATE.
Utilizado na expressão CAST o nulo recebe um tipo de dado específico. | NULL é uma constante sem tipo que representa um valor
desconhecido. |
' |
Parâmetro dinâmico Permitido em qualquer lugar na expressão onde o tipo de dado pode ser
facilmente deduzido.
Consulte Parâmetros dinâmicos. | Parâmetro dinâmico é o parâmetro de uma instrução SQL
para o qual não é especificado valor quando a instrução é criada.
Em vez disto, a instrução possui um ponto de interrogação (?) marcando a
posição de cada um dos parâmetros dinâmicos.
Consulte Parâmetros dinâmicos.
Os parâmetros dinâmicos são permitidos apenas em instruções preparadas.
Devem ser especificados valores para os mesmos antes da instrução preparada
ser executada.
Os valores especificados devem corresponder aos tipos esperados. |
' | Expressão CAST | Permite especificar o tipo de dado de NULL ou de um parâmetro
dinâmico, ou converter um valor para outro tipo de dado.
Consulte CAST.
|
' |
Subconsulta escalar | Uma subconsulta que retorna uma única linha com uma única
coluna.
Consulte SubconsultaEscalar. |
' |
Subconsulta tabela Permitida como ExpressãoTabela na cláusula FROM, e com EXISTS, IN e
comparações quantificadas. | Uma subconsulta que retorna mais de uma coluna e mais de uma
linha.
Consulte
SubconsultaTabela. |
' |
Expressão condicional | A expressão condicional escolhe a expressão a ser
avaliada baseado em um teste booleano. |
' | Expressões booleanas | Expressões que resultam em valores booleanos.
A maioria das expressões gerais podem resultar em valores booleanos.
Geralmente as expressões booleanas usadas na cláusula WHERE são feitas de
operandos operados por operadores SQL.
Consulte Operadores booleanos SQL. |
' |
Expressões numéricas | Expressões que resultam em valores numéricos.
A maioria das expressões gerais podem resultar em valores numéricos.
Os valores numéricos possuem um dos seguintes tipos de dado: SMALLINT, INTEGER, BIGINT, REAL, DOUBLE PRECISION, DECIMAL. |
' |
Expressões +, -, *, /, e + - unários | + -, *, /, e + - unários
Avaliam a operação matemática esperada nos operandos.
Se os dois operandos forem do mesmo tipo, o tipo do resultado não será
promovido, e portanto o operador de divisão em operandos inteiros resulta
em um inteiro que é o truncamento do resultado numérico real.
Quando são misturados tipos de dado diferentes, estes são promovidos conforme
descrito em Tipos de dado. O + unário é um não-operador (ou seja, +4 é o mesmo que 4).
O - unário é o mesmo que multiplicar o valor por -1, mudando efetivamente o
sinal. |
' | AVG | Retorna a média de um conjunto de valores numéricos.
AVG |
' | SUM | Retorna a soma de um conjunto de valores numéricos.
SUM |
' | LENGTH | Retorna o número de caracteres em uma cadeia de caracteres
ou de bits.
Consulte LENGTH. |
' | LOWER | Consulte LCASE ou LOWER. |
' | COUNT | |
' |
Expressões de caractere | Expressões que resultam em um valor CHAR ou VARCHAR.
A maioria das expressões gerais podem resultar em um valor CHAR ou VARCHAR. |
' |
Um valor CHAR ou VARCHAR que utiliza curingas. Usadas no padrão do LIKE. | Os caracteres curinga % e _ transformam a cadeia de
caracteres em um padrão com relação ao qual o operador LIKE pode procurar por
uma correspondência. |
' |
Expressão de concatenação | Em uma operação de concatenação, o operador de concatenação,
"||", concatena seu operando à direita ao seu operando à esquerda.
Opera em cadeias de caracteres e de bits.
Consulte Concatenação. |
' | Funções de cadeia nativas | As funções de cadeia nativas atuam em uma cadeia e retornam
uma cadeia.
Consulte LTRIM,
LCASE ou LOWER,
RTRIM,
SUBSTR
e UCASE ou UPPER |
' | Funções USER | As funções USER retornam informações sobre o usuário corrente
na forma de uma cadeia de caracteres.
Consulte CURRENT_USER,
SESSION_USER,
e USER |
' |
Expressões de data e hora | Uma expressão data/hora resulta em um valor do tipo
DATE, TIME, ou TIMESTAMP.
A maioria das expressões gerais podem resultar em um valor data/hora. |
' |
CURRENT_DATE | Retorna a data corrente.
Consulte CURRENT_DATE.
|
' |
CURRENT_TIME | Retorna a hora corrente.
Consulte CURRENT_TIME. |
' |
CURRENT_TIMESTAMP | Retorna o carimbo do tempo corrente.
Consulte CURRENT_TIMESTAMP. |
• | (), ?, Constante (incluindo sinal), NULL, ReferênciaColuna,
SubconsultaEscalar, CAST | |
• | LENGTH, CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP, e outras operações nativas | |
• | + e - unários | |
• | *, /, || (concatenação) | |
• | + e - binários | |
• | comparações, comparações quantificadas, EXISTS, IN, IS NULL, LIKE, BETWEEN,
IS | |
• | NOT | |
• | AND | |
• | OR |
Operador | Explicação e exemplo | Sintaxe |
AND, OR, NOT
|
Avalia os operandos, que são expressões booleanas
|
|
Comparações
|
<, =, >, <=, >=, <> são aplicáveis a todos os tipos nativos.
|
|
IS NULL, IS NOT NULL
| Testa se o resultado de uma expressão é nulo ou não.
|
|
LIKE
|
Tenta fazer a correspondência entre uma expressão de caractere e um padrão de
caractere, que é uma cadeia de caracteres que inclui um ou mais caracteres
curinga.
O caractere % corresponde a qualquer número (zero ou mais) de caracteres
na posição correspondente na primeira expressão de caractere. O caractere _ corresponde a um caractere
na posição correspondente na expressão de caractere. Qualquer outro caractere corresponde apenas a este caractere na posição
correspondente na expressão de caractere.
Para tratar os caracteres % e _ como caracteres constante, o caractere
deve ser precedido por um caractere de escape opcional, especificado na
cláusula ESCAPE.
|
|
BETWEEN
|
Testa se o primeiro operando está entre o segundo e o terceiro operandos.
O segundo operando deve ser menor que o terceiro operando.
Aplicável apenas aos tipos de dado onde se pode aplicar <= e >=.
|
|
IN
|
Opera sobre uma subconsulta a tabela ou uma lista de valores.
Retorna TRUE se o valor da expressão à esquerda está presente no resultado da
subconsulta a tabela ou na lista de valores.
A subconsulta a tabela pode retornar várias linhas, mas deve retornar uma
única coluna.
|
|
EXISTS
|
Opera sobre uma subconsulta a tabela.
Retorna TRUE se a subconsulta a tabela retornar alguma linha,
e FALSE se não retornar nenhuma linha.
A subconsulta a tabela pode retornar várias colunas (somente se for utilizado
* para indicar várias colunas) e linhas.
|
|
Comparação quantificada
|
A comparação quantificada é um operador de comparação
(<, =, >, <=, >=, <>)
com ALL, ANY ou SOME aplicado.
Opera sobre subconsultas a tabela, que podem retornar várias linhas, mas
devem retornar uma única coluna. Se for utilizado ALL, a comparação deverá ser verdade para todos os valores
retornados pela subconsulta a tabela.
Se for utilizado ANY ou SOME, a comparação deverá ser verdade para pelo menos um
valor da subconsulta a tabela.
ANY e SOME são equivalentes.
|
|
PreparedStatement ps2 = conn.prepareStatement( "UPDATE DISPONIBILIDADE_HOTEL SET QUARTOS_DISPONÍVEIS = " + "(QUARTOS_DISPONÍVEIS - ?) WHERE ID_HOTEL = ? " + "AND DATA_DE_RESERVA BETWEEN ? AND ?"); -- este código de exemplo define os valores dos parâmetros dinâmicos -- como sendo iguais aos valores de variáveis do programa ps2.setInt(1, numeroQuartos); ps2.setInt(2, oHotel.idHotel); ps2.setDate(3, chegada); ps2.setDate(4, saida); updateCount = ps2.executeUpdate();
1.
| É permitido o uso como primeiro operando do BETWEEN, se o segundo ou o
terceiro operando não for um parâmetro dinâmico.
O tipo de dado do primeiro operando é assumido como sendo o tipo de dado do
parâmetro que não é dinâmico, ou o resultado da união dos tipos do segundo e do
terceiro operandos, se estes dois não forem parâmetros dinâmicos.
| |
2.
| É permitido o uso como segundo ou terceiro operando do BETWEEN.
O tipo de dado é assumido como sendo o tipo de dado do operando à esquerda.
| |
3.
| É permitido o uso como operando à esquerda da lista IN
se pelo menos um item da lista não for um parâmetro dinâmico.
O tipo de dado do operando à esquerda é assumido como sendo o resultado da
união dos tipos de dado dos parâmetros não dinâmicos da lista.
| |
4.
| É permitido o uso na lista de valores do predicado IN, se o primeiro
operando não for um parâmetro dinâmico, ou seu tipo foi determinado pela
regra anterior.
O tipo dos parâmetros dinâmicos que aparecem na lista de valores é assumido
como sendo o tipo do operando à esquerda.
| |
5.
| Para os operadores binários +, -, *, /, AND, OR, <, >,
=, <>, <= e >=, é permitido o uso do parâmetro dinâmico como um
dos operandos, mas não os dois.
Seu tipo de dado é obtido a partir do tipo do outro lado.
| |
6.
| A utilização em CAST é sempre permitida, porque CAST fornece tipo de dado
ao parâmetro dinâmico.
| |
7.
| É permitido o uso nos dois lados do operador LIKE.
Quando utilizado no lado esquerdo, o tipo de dado do parâmetro dinâmico é
definido como sendo o tipo de dado do operando à direita, mas com o comprimento
máximo permitido para o tipo de dado.
Quando utilizado no lado direito, o tipo de dado é assumido como sendo do
mesmo comprimento e tipo de dado do operando à esquerda
(LIKE é permitido nos tipos de dado CHAR e VARCHAR;
para obter mais informações deve ser consultado
Concatenação).
| |
8.
| O parâmetro ?, sem mais nada, é permitido em apenas um dos lados do operador
||, ou seja, "? || ?" não é permitido.
O tipo do parâmetro ? de um dos lados do operador || é determinado pelo tipo
da expressão do outro lado do operador ||.
Se a expressão do outro lado for do tipo de dado CHAR ou VARCHAR, o tipo do
parâmetro será VARCHAR com o comprimento máximo permitido para o tipo de dado.
Se a expressão do outro lado for do tipo de dado CHAR FOR BIT DATA ou
VARCHAR FOR BIT DATA, o tipo de dado do parâmetro será VARCHAR FOR BIT DATA
com o comprimento máximo permitido para o tipo de dado.
| |
9.
|
Em uma expressão condicional, que utiliza ?, também é permitida a utilização
do parâmetro dinâmico (que também é representado por ?).
O tipo do parâmetro dinâmico como primeiro operando é assumido como sendo
booleano.
Com relação ao segundo e terceiro operandos, somente um dos dois pode ser um
parâmetro dinâmico, e seu tipo é assumido como sendo o mesmo do outro operando
(ou seja, o terceiro e segundo operando, respectivamente).
| |
10.
| É permitido usar parâmetro dinâmico como item da lista de valores ou da
lista de seleção da instrução INSERT.
O tipo do parâmetro dinâmico é assumido como sendo o tipo da coluna de destino.
O parâmetro ?, sem mais nada, não é permitido na lista de seleção, inclusive na
lista de seleção da subconsulta, a menos que exista uma coluna correspondente
em UNION, INTERSECT ou EXCEPT
(consulte o nº
16, abaixo)
que não seja dinâmica.
| |
11.
| O parâmetro ? na comparação com uma subconsulta recebe seu tipo a partir
da expressão sendo selecionada na subconsulta. Por exemplo:
| |
12.
| É permitido usar parâmetro dinâmico como o valor em uma instrução UPDATE.
O tipo do parâmetro dinâmico é assumido como sendo o tipo da coluna na tabela
de destino.
| |
13.
| Não é permitido parâmetro dinâmico como operando dos operadores unários
- e +. | |
14.
| LENGTH permite parâmetro dinâmico.
O tipo é assumido como sendo o comprimento máximo do tipo VARCHAR.
| |
15.
| Comparações qualificadas.
| |
16.
| É permitido usar parâmetro dinâmico para representar uma
coluna se aparecer em uma expressão UNION, INTERSECT ou EXCEPT;
O Derby pode inferir
o tipo de dado a partir da coluna correspondente na expressão.
| |
17.
| É permitido parâmetro dinâmico como operando à esquerda de uma expressão IS,
sendo assumido como booleano. |
- (1+?)
ADD | ||
ALL | ||
ALLOCATE | ||
ALTER | ||
AND | ||
ANY | ||
ARE | ||
AS | ||
ASC | ||
ASSERTION | ||
AT | ||
AUTHORIZATION | ||
AVG | ||
BEGIN | ||
BETWEEN | ||
BIT | ||
BOOLEAN | ||
BOTH | ||
BY | ||
CALL | ||
CASCADE | ||
CASCADED | ||
CASE | ||
CAST | ||
CHAR | ||
CHARACTER | ||
CHECK | ||
CLOSE | ||
COLLATE | ||
COLLATION | ||
COLUMN | ||
COMMIT | ||
CONNECT | ||
CONNECTION | ||
CONSTRAINT | ||
CONSTRAINTS | ||
CONTINUE | ||
CONVERT | ||
CORRESPONDING | ||
COUNT | ||
CREATE | ||
CURRENT | ||
CURRENT_DATE | ||
CURRENT_TIME | ||
CURRENT_TIMESTAMP | ||
CURRENT_USER | ||
CURSOR | ||
DEALLOCATE | ||
DEC | ||
DECIMAL | ||
DECLARE | ||
DEFERRABLE | ||
DEFERRED | ||
DELETE | ||
DESC | ||
DESCRIBE | ||
DIAGNOSTICS | ||
DISCONNECT | ||
DISTINCT | ||
DOUBLE | ||
DROP | ||
ELSE | ||
END | ||
ENDEXEC | ||
ESCAPE | ||
EXCEPT | ||
EXCEPTION | ||
EXEC | ||
EXECUTE | ||
EXISTS | ||
EXPLAIN | ||
EXTERNAL | ||
FALSE | ||
FETCH | ||
FIRST | ||
FLOAT | ||
FOR | ||
FOREIGN | ||
FOUND | ||
FROM | ||
FULL | ||
FUNCTION | ||
GET | ||
GET_CURRENT_CONNECTION | ||
GLOBAL | ||
GO | ||
GOTO | ||
GRANT | ||
GROUP | ||
HAVING | ||
HOUR | ||
IDENTITY | ||
IMMEDIATE | ||
IN | ||
INDICATOR | ||
INITIALLY | ||
INNER | ||
INOUT | ||
INPUT | ||
INSENSITIVE | ||
INSERT | ||
INT | ||
INTEGER | ||
INTERSECT | ||
INTO | ||
IS | ||
ISOLATION | ||
JOIN | ||
KEY | ||
LAST | ||
LEFT | ||
LIKE | ||
LONGINT | ||
LOWER | ||
LTRIM | ||
MATCH | ||
MAX | ||
MIN | ||
MINUTE | ||
NAÇÃOAL | ||
NATURAL | ||
NCHAR | ||
NVARCHAR | ||
NEXT | ||
NO | ||
NOT | ||
NULL | ||
NULLIF | ||
NUMERIC | ||
OF | ||
ON | ||
ONLY | ||
OPEN | ||
OPTION | ||
OR | ||
ORDER | ||
OUT | ||
OUTER | ||
OUTPUT | ||
OVERLAPS | ||
PAD | ||
PARTIAL | ||
PREPARE | ||
PRESERVE | ||
PRIMARY | ||
PRIOR | ||
PRIVILEGES | ||
PROCEDURE | ||
PUBLIC | ||
READ | ||
REAL | ||
REFERENCES | ||
RELATIVE | ||
RESTRICT | ||
REVOKE | ||
RIGHT | ||
ROLLBACK | ||
ROWS | ||
RTRIM | ||
SCHEMA | ||
SCROLL | ||
SECOND | ||
SELECT | ||
SESSION_USER | ||
SET | ||
SMALLINT | ||
SOME | ||
SPACE | ||
SQL | ||
SQLCODE | ||
SQLERROR | ||
SQLSTATE | ||
SUBSTR | ||
SUBSTRING | ||
SUM | ||
SYSTEM_USER | ||
TABLE | ||
TEMPORARY | ||
TIMEZONE_HOUR | ||
TIMEZONE_MINUTE | ||
TO | ||
TRAILING | ||
TRANSACTION | ||
TRANSLATE | ||
TRANSLATION | ||
TRUE | ||
UNION | ||
UNIQUE | ||
UNKNOWN | ||
UPDATE | ||
UPPER | ||
USER | ||
USING | ||
VALUES | ||
VARCHAR | ||
VARYING | ||
VIEW | ||
WHENEVER | ||
WHERE | ||
WITH | ||
WORK | ||
WRITE | ||
XML | ||
XMLEXISTS | ||
XMLPARSE | ||
XMLSERIALIZE | ||
YEAR |
• | SQL92E Entrada (entry) | |
• | SQL92T Transicional (transitional), um nível definido pelo NIST
em uma publicação chamada FIPS 127-2 | |
• | SQL92I Intermediário (intermediate) | |
• | SQL92F Completo (full) |
Funcionalidade | Origem | Derby |
SMALLINT | SQL92E | sim |
INTEGER | SQL92E | sim |
DECIMAL(p,s) | SQL92E | sim |
NUMERIC(p,s) | SQL92E | sim |
REAL | SQL92E | sim |
FLOAT(p) | SQL92E | sim |
DOUBLE PRECISION | SQL92E | sim |
CHAR(n) | SQL92E | sim |
Funcionalidade | Origem | Derby |
+, *, -, /, + unário, - unário | SQL92E | sim |
Funcionalidade | Origem | Derby |
<, >, <= ,>=, <>, = | SQL92E | sim |
Funcionalidade | Origem | Derby |
BETWEEN, LIKE, NULL | SQL92E | sim |
Funcionalidade | Origem | Derby |
IN, ALL/SOME, EXISTS | SQL92E | sim |
Funcionalidade | Origem | Derby |
tabelas | SQL92E | sim |
visões | SQL92E | sim |
privilégios | SQL92E | sim |
Funcionalidade | Origem | Derby |
valor padrão | SQL92E | sim |
nulo | SQL92E | sim |
Funcionalidade | Origem | Derby |
NOT NULL | SQL92E | sim (não armazenada em SYSCONSTRAINTS) |
UNIQUE/PRIMARY KEY | SQL92E | sim |
FOREIGN KEY | SQL92E | sim |
CHECK | SQL92E | sim |
Visão com WITH CHECK OPTION | SQL92E | não, uma vez que as visões não são atualizáveis |
Funcionalidade | Origem | Derby |
DECLARE, OPEN, FETCH, CLOSE | SQL92E | realizadas através do JDBC |
UPDATE, DELETE CURRENT | SQL92E | sim |
Funcionalidade | Origem | Derby |
ALLOCATE / DEALLOCATE / GET / SET DESCRIPTOR | SQL92T | realizadas através do JDBC |
PREPARE / EXECUTE / EXECUTE IMMEDIATE | SQL92T | realizadas através do JDBC |
Cursor dinâmico DECLARE, OPEN, FETCH, CLOSE, UPDATE, DELETE | SQL92T | realizadas através do JDBC |
Saída DESCRIBE | SQL92T | realizadas através do JDBC |
Funcionalidade | Origem | Derby |
TABLES | SQL92T | SYS.SYSTABLES, SYS.SYSVIEWS, SYS.SYSCOLUMNS |
VIEWS | SQL92T | SYS.SYSTABLES, SYS.SYSVIEWS, SYS.SYSCOLUMNS |
COLUMNS | SQL92T | SYS.SYSTABLES, SYS.SYSVIEWS, SYS.SYSCOLUMNS |
Funcionalidade | Origem | Derby |
CREATE / DROP TABLE | SQL92T | sim |
CREATE / DROP VIEW | SQL92T | sim |
GRANT / REVOKE | SQL92T | não |
ALTER TABLE ADD COLUMN | SQL92T | sim |
ALTER TABLE DROP COLUMN | SQL92T | não |
Funcionalidade | Origem | Derby |
INNER JOIN | SQL92T | sim |
junção natural | SQL92T | não |
LEFT, RIGHT OUTER JOIN | SQL92T | sim |
condição de junção | SQL92T | sim |
junção de colunas nomeada | SQL92T | sim |
Funcionalidade | Origem | Derby |
DATE, TIME, TIMESTAMP, INTERVAL simples | SQL92T | sim, menos INTERVAL |
constantes data/hora | SQL92T | sim |
matemática data/hora | SQL92T | pode ser feito com métodos Java |
comparações de data/hora | SQL92T | sim |
predicados: OVERLAPS | SQL92T | pode ser feito com métodos Java |
Funcionalidade | Origem | Derby |
LENGTH | SQL92T | sim |
concatenação (||) | SQL92T | sim |
Funcionalidade | Origem | Derby |
READ WRITE / READ ONLY | SQL92T | através do JDBC, propriedades do banco de dado e meio de armazenamento. |
RU, RC, RR, SER | SQL92T | sim |
Funcionalidade | Origem | Derby |
Visão SCHEMATA | SQL92T | SYS.SYSSCHEMAS |
Funcionalidade | Origem | Derby |
TABLE_PRIVILEGES | SQL92T | não |
COLUMNS_PRIVILEGES | SQL92T | não |
USAGE_PRIVILEGES | SQL92T | não |
Funcionalidade | Origem | Derby |
Relaxamento de UNION | SQL92I | sim |
EXCEPT | SQL92I | sim |
INTERSECT | SQL92I | sim |
CORRESPONDING | SQL92I | não |
Funcionalidade | Origem | Derby |
CREATE SCHEMA | SQL92I | sim, parcialmente |
Funcionalidade | Origem | Derby |
SET SESSION AUTHORIZATION | SQL92I | usado SET SCHEMA |
CURRENT_USER | SQL92I | sim |
SESSION_USER | SQL92I | sim |
SYSTEM_USER | SQL92I | não |
Funcionalidade | Origem | Derby |
TABLE CONSTRAINTS | SQL92I | SYS.SYSCONSTRAINTS |
REFERENTIAL CONSTRAINTS | SQL92I | SYS.SYSFOREIGNKEYS |
CHECK CONSTRAINTS | SQL92I | SYS.SYSCHECKS |
Funcionalidade | Origem | Derby |
SQL_FEATURES | SQL92I/FIPS 127-2 | usado JDBC DatabaseMetaData |
SQL_SIZING | SQL92I/FIPS 127-2 | usado JDBC DatabaseMetaData |
Funcionalidade | Origem | Derby |
precisão para TIME e TIMESTAMP | SQL92F | sim |
Funcionalidade | Origem | Derby |
Expressão POSITION | SQL92F | usado métodos Java ou LOCATE |
Funções UPPER/LOWER | SQL92F | sim |
Funcionalidade | Origem | Derby |
Identificadores delimitados | SQL92E | sim |
Subconsultas correlacionadas | SQL92E | sim |
Instruções de inserção, atualização e exclusão | SQL92E | sim |
Junções | SQL92E | sim |
Qualificações no WHERE | SQL92E | sim |
GROUP BY | SQL92E | sim |
HAVING | SQL92E | sim |
Funções de agregação | SQL92E | sim |
ORDER BY | SQL92E | sim |
Expressões de seleção | SQL92E | sim |
SELECT * | SQL92E | sim |
SQLCODE | SQL92E | não, em obsolescência no SQL-92 |
SQLSTATE | SQL92E | sim |
UNION, INTERSECT e EXCEPT em visões | SQL92T | sim |
Conversão numérica implícita | SQL92T | sim |
Conversão de caractere implícita | SQL92T | sim |
Obter diagnóstico | SQL92T | usado JDBC SQLException |
Operações agrupadas | SQL92T | sim |
* qualificado na lista de seleção | SQL92T | sim |
Identificadores em minúsculas | SQL92T | sim |
PRIMARY KEY com nulo | SQL92T | não |
Suporte a vários módulos | SQL92T | não (não é requerido e não faz parte do JDBC) |
Ações de exclusão referencial | SQL92T | CASCADE, SET NULL, RESTRICT e NO ACTION. |
Funções CAST | SQL92T | sim |
Expressões INSERT | SQL92T | sim |
Padrões explícitos | SQL92T | sim |
Relaxamento de palavra chave | SQL92T | sim |
Definição de domínio | SQL92I | não |
Expressão CASE | SQL92I | suporte parcial |
Constantes cadeia de caracteres compostas | SQL92I | usado concatenação |
Melhorias no LIKE | SQL92I | sim |
Predicado UNIQUE | SQL92I | não |
Utilização de tabelas | SQL92I | SYS.SYSDEPENDS |
Esquema de informação intermediário | SQL92I | usado JDBC DatabaseMetaData e
tabelas do sistema do Derby |
Suporte a subprograma | SQL92I | não é relevante para o JDBC, que é muito mais rico |
Sinalização SQL intermediária | SQL92I | não |
Manipulação de esquema | SQL92I | sim |
Identificadores longos | SQL92I | sim |
Junção externa completa | SQL92I | não |
Especificação de zona horária | SQL92I | não |
Cursores rolados | SQL92I | parcial (rolagem não sensível ao conjunto de resultados
através do JDBC 2.0) |
Suporte a funções de conjunto intermediário | SQL92I | parcial |
Definição de conjunto de caracteres | SQL92I | suporta idiomas do Java |
Conjuntos de caracteres nomeados | SQL92I | suporta idiomas do Java |
Valores de subconsulta escalar | SQL92I | sim |
Predicado nulo expandido | SQL92I | sim |
Gerenciamento de restrições | SQL92I | sim (ADD/DROP CONSTRAINT) |
Tipos FOR BIT DATA | SQL92F | sim |
Restrições de asserção | SQL92F | não |
Tabelas temporárias | SQL92F | somente sintaxe específica da IBM |
SQL dinâmico completo | SQL92F | não |
Expressões de valor completa | SQL92F | sim |
Testes de valor verdade | SQL92F | sim |
tabelas derivadas no FROM | SQL92F | sim |
Sublinhado no final | SQL92F | sim |
Tipos de dado indicador | SQL92F | não é relevante para o JDBC |
Ordem de nome referencial | SQL92F | não |
Sinalização SQL completa | SQL92F | não |
Construtores de linha e de tabela | SQL92F | sim |
Qualificadores de nome de catálogo | SQL92F | não |
Tabelas simples | SQL92F | não |
Subconsultas no CHECK | SQL92F | não, mas pode ser feito com métodos Java |
Junção de união | SQL92F | não |
Agrupamento e tradução | SQL92F | Suportados os idiomas do Java |
Ações de atualização referenciais | SQL92F | RESTRICT e NO ACTION. As demais podem ser feitas com gatilhos. |
ALTER domínio | SQL92F | não |
INSERT privilégios em colunas | SQL92F | não |
Tipos MATCH referenciais | SQL92F | não |
Melhorias de CHECK em visões | SQL92F | não, as visões não são atualizáveis |
Gerenciamento de sessão | SQL92F | usado JDBC |
Gerenciamento de conexão | SQL92F | usado JDBC |
Operações de auto-referenciamento | SQL92F | sim |
Cursores não sensíveis | SQL92F | Sim, através do JDBC 2.0 |
Função de conjunto completa | SQL92F | parcialmente |
Sinalização de catálogo | SQL92F | não |
Referências a tabela local | SQL92F | não |
Atualização de cursor completa | SQL92F | não |
Nome da coluna | Tipo | Comprimento | Aceita nulo | Conteúdo |
ALIASID | CHAR | 36 | falso | identificador único para o aliás |
ALIAS | VARCHAR | 128 | falso | aliás |
SCHEMAID | CHAR | 36 | verdade | reservado para uso futuro |
JAVACLASSNAME | LONGVARCHAR | 255 | falso | o nome da classe Java |
ALIASTYPE | CHAR | 1 | falso | 'F' (função), 'P' (procedimento) |
NAMESPACE | CHAR | 1 | falso | 'F' (função), 'P' (procedimento) |
SYSTEMALIAS | BOOLEAN | ' | falso | verdade (fornecido pelo sistema ou aliás nativo)
falso (aliás criado pelo usuário) |
ALIASINFO |
Esta classe não faz parte da API pública | ' | verdade | interface Java que encapsula informações adicionais
específicas de um aliás |
SPECIFICNAME | VARCHAR | 128 | falso | identificador gerado pelo sistema |
Nome da coluna | Tipo | Comprimento | Aceita nulo | Conteúdo |
CONSTRAINTID | CHAR | 36 | falso | identificador único para a restrição |
CHECKDEFINITION | LONG VARCHAR | ' | falso | texto da definição da restrição de verificação |
REFERENCEDCOLUMNS | org.apache.derby.catalog. ReferencedColumns:
Esta classe não faz parte da API pública. | ' | falso | descrição das colunas referenciadas pela restrição de verificação |
Nome da coluna | Tipo | Comprimento | Aceita nulo | Conteúdo |
REFERENCEID | CHAR | 36 | falso | identificador da tabela (junção com SYSTABLES.TABLEID) |
COLUMNNAME | CHAR | 128 | falso | nome da coluna ou do parâmetro |
COLUMNNUMBER | INT | 4 | falso | posição da coluna na tabela |
COLUMNDATATYPE | org.apache.derby.catalog. TypeDescriptor
Esta classe não faz parte da API pública. | ' | falso | tipo do sistema que descreve a precisão, comprimento, escala,
se pode ser nulo, nome do tipo, e tipo de armazenamento do dado |
COLUMNDEFAULT | java.io.Serializable | ' | verdade | para as tabelas descreve o valor padrão da coluna.
O método toString() do objeto armazenado na tabela retorna o texto do
valor padrão conforme especificado na instrução CREATE TABLE ou ALTER TABLE.
|
COLUMNDEFAULTID | CHAR | 36 | verdade | identificador único para o valor padrão |
AUTOINCREMENT COLUMNVALUE | BIGINT | ' | verdade | qual será o próximo valor para a coluna, se a coluna for
uma coluna identidade |
AUTOINCREMENT COLUMNSTART | BIGINT | ' | verdade | valor inicial da coluna (se especificado), se a coluna for
uma coluna de identidade |
AUTOINCREMENT COLUMNINC | BIGINT | ' | verdade | quantidade incrementada automaticamente no valor da coluna,
se a coluna for uma coluna identidade |
Nome da coluna | Tipo | Comprimento | Aceita nulo | Conteúdo |
SCHEMAID | CHAR | 36 | falso | ID de esquema para o conglomerado |
TABLEID | CHAR | 36 | falso | identificador da tabela (junção com SYSTABLES.TABLEID) |
CONGLOMERATENUMBER | BIGINT | 8 | falso | ID de conglomerado para o conglomerado (heap ou índice) |
CONGLOMERATENAME | VARCHAR | 128 | verdade | nome do índice, se o conglomerado for um índice, senão o
ID da tabela |
ISINDEX | BOOLEAN | 1 | falso | indica se o conglomerado é um índice, ou não |
DESCRIPTOR | Esta classe não faz parte da API pública. | ' | verdade | tipo do sistema descrevendo o índice |
ISCONSTRAINT | BOOLEAN | 1 | verdade | indica se o conglomerado é um índice gerado pelo sistema para
impor uma restrição, ou não |
CONGLOMERATEID | CHAR | 36 | falso | identificador único para o conglomerado |
Nome da coluna | Tipo | Comprimento | Aceita nulo | Conteúdo |
CONSTRAINTID | CHAR | 36 | falso | identificador único para a restrição |
TABLEID | CHAR | 36 | falso | identificador para a tabela (junção com SYSTABLES.TABLEID) |
CONSTRAINTNAME | VARCHAR | 128 | falso | nome da restrição (gerado internamente se não for
especificado pelo usuário) |
TYPE | CHAR | 1 | falso | P (chave primária), U (unicidade),
C (verificação) ou F (chave estrangeira) |
SCHEMAID | CHAR | 36 | falso | identificador do esquema ao qual a restrição pertence
(junção com SYSSCHEMAS.SCHEMAID) |
STATE | CHAR | 1 | falso | E para habilitado (enabled),
D para desabilitado (disabled) |
REFERENCECOUNT | INTEGER | 1 | falso | o contador do número de restrições de chave estrangeira
que fazem referência a esta restrição; este número só pode ser maior que zero
para as restrições PRIMARY KEY e UNIQUE |
Nome da coluna | Tipo | Comprimento | Aceita nulo | Conteúdo |
DEPENDENTID | CHAR | 36 | falso | identificador único para o dependente |
DEPENDENTFINDER | org.apache.derby.catalog. DependableFinder:
Esta classe não faz parte da API pública. | 1 | falso | tipo do sistema descrevendo a visão |
PROVIDERID | CHAR | 36 | falso | identificador único para o fornecedor |
PROVIDERFINDER | org.apache.derby.catalog. DependableFinder
Esta classe não faz parte da API pública. | 1 | falso | tipo do sistema descrevendo as tabelas, conglomerados e
restrições que são fornecedores |
Nome da coluna | Tipo | Comprimento | Aceita nulo | Conteúdo |
FILEID | CHAR | 36 | falso | identificador único para o arquivo jar |
SCHEMAID | CHAR | 36 | falso | ID do esquema do arquivo jar
(junção com SYSSCHEMAS. SCHEMAID) |
FILENAME | VARCHAR | 128 | falso | nome SQL do arquivo jar |
GENERATIONID | BIGINT | ' | falso | Número de geração do arquivo.
Quando os arquivos jar são substituídos, seus identificadores de geração
são alterados. |
Nome da coluna | Tipo | Comprimento | Aceita nulo | Conteúdo |
CONSTRAINTID | CHAR | 36 | falso | identificador único para a restrição de chave estrangeira
(junção com SYSCONSTRAINTS. CONSTRAINTID) |
CONGLOMERATEID | CHAR | 36 | falso | identificador único para o índice de apoio da restrição de
chave estrangeira (junção com SYSCONGLOMERATES. CONGLOMERATEID) |
KEYCONSTRAINTID | CHAR | 36 | falso | identificador único para a restrição de chave primária ou de
unicidade referenciada por esta chave estrangeira
(SYSKEYS. CONSTRAINTID ou SYSCONSTRAINTS. CONSTRAINTID) |
DELETERULE | CHAR | 1 | falso | R para NO ACTION (padrão), S para RESTRICT,
C para CASCADE, U para SET NULL |
UPDATERULE | CHAR | 1 | falso | R para NO ACTION(padrão), S para RESTRICT |
Nome da coluna | Tipo | Comprimento | Aceita nulo | Conteúdo |
CONSTRAINTID | CHAR | 36 | falso | identificador único para a restrição |
CONGLOMERATEID | CHAR | 36 | falso | identificador único para o índice de apoio |
Nome da coluna | Tipo | Comprimento | Aceita nulo | Conteúdo |
STATID | CHAR | 36 | falso | identificador único para a estatística |
REFERENCEID | CHAR | 36 | falso | o conglomerado para o qual a estatística foi criada
(junção com SYSCONGLOMERATES. CONGLOMERATEID) |
TABLEID | CHAR | 36 | falso | a tabela para a qual a informação foi coletada |
CREATIONTIMESTAMP | TIMESTAMP | ' | falso | momento em que a estatística foi criada ou atualizada |
TYPE | CHAR | 1 | falso | tipo da estatística |
VALID | BOOLEAN | ' | falso | se a estatística ainda é válida |
COLCOUNT | INTEGER | ' | falso | número de colunas na estatística |
STATISTICS | Esta classe não faz parte da API pública. | ' | verdade | informação estatística |
Nome da coluna | Tipo | Comprimento | Aceita nulo | Conteúdo |
STMTID | CHAR | 36 | falso | identificador único para a instrução |
STMTNAME | VARCHAR | 128 | falso | nome da instrução |
SCHEMAID | CHAR | 36 | falso | o esquema onde a instrução reside |
TYPE | CHAR | 1 | falso | sempre 'S' |
VALID | BOOLEAN | ' | falso | TRUE se válida, FALSE se inválida |
TEXT | LONG VARCHAR | ' | falso | texto da instrução |
LASTCOMPILED | TIMESTAMP | ' | verdade | momento em que a instrução foi compilada |
COMPILATION SCHEMAID | CHAR | 36 | falso | ID do esquema contendo a instrução |
USINGTEXT | LONG VARCHAR | ' | verdade | texto da cláusula USING da instrução CREATE STATEMENT
e ALTER STATEMENT |
Nome da coluna | Tipo | Comprimento | Aceita nulo | Conteúdo |
TABLEID | CHAR | 36 | falso | identificador único para a tabela ou visão |
TABLENAME | VARCHAR | 128 | falso | nome da tabela ou da visão |
TABLETYPE | CHAR | 1 | falso | 'S' (tabela do sistema),
'T' (tabela do usuário), ou 'V' (visão) |
SCHEMAID | CHAR | 36 | falso | ID do esquema da tabela ou da visão |
LOCK GRANULARITY | CHAR | 1 | falso | Indica a granularidade do bloqueio da tabela
'T' (bloqueio no nível de tabela) 'R' (bloqueio no nível de linha, o padrão) |
Nome da coluna | Tipo | Comprimento | Aceita nulo | Conteúdo |
TRIGGERID | CHAR | 36 | falso | identificador único para o gatilho |
TRIGGERNAME | VARCHAR | 128 | falso | nome do gatilho |
SCHEMAID | CHAR | 36 | falso | ID do esquema do gatilho (junção com SYSSCHEMAS. SCHEMAID) |
CREATIONTIMESTAMP | TIMESTAMP | ' | falso | momento em que o gatilho foi criado |
EVENT | CHAR | 1 | falso | 'U' para atualização (update), 'D' para exclusão (delete),
'I' para inserção (insert) |
FIRINGTIME | CHAR | 1 | falso | 'B' para antes (before) e 'A' para após (after) |
TYPE | CHAR | 1 | falso | 'R' para linha (row), 'S' para instrução (statement) |
STATE | CHAR | 1 | falso | 'E' para habilitado (enabled), 'D' para desabilitado (disabled) |
TABLEID | CHAR | 36 | falso | ID da tabela para a qual o gatilho foi definido |
WHENSTMTID | CHAR | 36 | verdade | usado somente quando existe a cláusula WHEN
(ainda não suportado) |
ACTIONSTMTID | CHAR | 36 | verdade | ID da instrução preparada armazenada para a
instrução-SQL-engatilhada (junção com SYSSTATEMENTS. STMTID) |
REFERENCEDCOLUMNS | org.apache.derby.catalog. ReferencedColumns:
Esta classe não faz parte da API pública. | ' | verdade | descritor das colunas referenciadas pelos gatilhos de UPDATE |
TRIGGERDEFINITION | LONG VARCHAR | ' | verdade | texto da instrução SQL de ação |
REFERENCINGOLD | BOOLEAN | ' | verdade | indica se OLDREFERENCINGNAME, se não for nulo, faz
referência à linha ou tabela OLD, ou não |
REFERENCINGNEW | BOOLEAN | ' | verdade | indica se NEWREFERENCINGNAME, se não for nulo, faz
referência à linha ou tabela NEW, ou não |
OLDREFERENCINGNAME | VARCHAR | 128 | verdade | pseudonome definido utilizando a cláusula REFERENCING OLD AS |
NEWREFERENCINGNAME | VARCHAR | 128 | verdade | pseudonome definido utilizando a cláusula REFERENCING NEW AS |
Nome da coluna | Tipo | Comprimento | Aceita nulo | Conteúdo |
TABLEID | CHAR | 36 | falso | identificador único para a visão (chamada TABLEID uma vez
que é feita a junção com uma coluna com este nome em SYSTABLES) |
VIEWDEFINITION | LONG VARCHAR | ' | falso | texto da definição da visão |
CHECKOPTION | CHAR | 1 | falso | 'N' (opção de verificação, ainda não suportada) |
COMPILATION SCHEMAID | CHAR | 36 | falso | ID do esquema que contém a visão |
SQLSTATE | Texto da mensagem |
01003 | Null values were eliminated from the argument of a column
function. |
0100E | XX Attempt to return too many result sets. |
01500 | The constraint <constraintName> on table <tableName>
has been dropped. |
01501 | The view <viewName> has been dropped. |
01502 | The trigger <triggerName> on table <tableName>
has been dropped. |
01503 | The column <columnName> on table <tableName>
has been modified by adding a not null constraint. |
01504 | The new index is a duplicate of an existing index: <index>.
|
01505 | The value <valueName> may be truncated. |
01522 | The newly defined synonym '<synonymName>'
resolved to the object '<objectName>' which is currently undefined. |
01J01 | Database '<databaseName>' not created, connection
made to existing database instead. |
01J02 | Scroll sensitive cursors are not currently implemented. |
01J03 | Scroll sensitive and scroll insensitive updatable ResultSets
are not currently implemented. |
01J04 | The class '<className>' for column '<columnName>'
does not implement java.io.Serializable or java.sql.SQLData. Instances must
implement one of these interfaces to allow them to be stored. |
01J05 | Database upgrade succeeded. The upgraded database is
now ready for use. Revalidating stored prepared statements failed. See next
exception for details about failure. |
01J06 | ResultSet not updatable. Query does not qualify to generate
an updatable ResultSet. |
SQLSTATE | Texto da mensagem |
04501 | Database connection refused. |
SQLSTATE | Texto da mensagem |
07000 | At least one parameter to the current statement is uninitialized.
|
07004 | Parameter <parameterName> is a <procedureName>
procedure parameter and must be registered with CallableStatement.registerOutParameter
before execution. |
07009 | No input parameters. |
SQLSTATE | Texto da mensagem |
08000 | Connection closed by unknown interrupt. |
08003 | No current connection. |
08004 | Connection refused : <connectionName>
|
08006 | Database '<databaseName>' |
SQLSTATE | Texto da mensagem |
0A000 | Feature not implemented: <featureName>. |
SQLSTATE | Texto da mensagem |
21000 | Scalar subquery is only allowed to return a single row. |
SQLSTATE | Texto da mensagem |
2200L | XMLPARSE operand is not an XML document; see next exception
for details. |
22001 | A truncation error was encountered trying to shrink <value>
'<value>' to length <value> |
22003 | The resulting value is outside the range for the data
type <datatypeName>. |
22005 | An attempt was made to get a data value of type '<typeName>'
from a data value of type '<typeName>'. |
22007 | The string representation of a datetime value is out
of range. |
22007 | The syntax of the string representation of a datetime
value is incorrect. |
22008 | '<argument>' is an invalid argument to the <functionName>
function. |
22011 | The second or third argument of the SUBSTR function
is out of range. |
22012 | Attempt to divide by zero. |
22013 | Attempt to take the square root of a negative number,
'<number>'. |
22014 | The start position for LOCATE is invalid; it must be
a positive integer. The index to start the search from is '<index>'.
The string to search for is '<index>'. The string to search from
is '<index>'. |
22015 | The '<functionName>' function is not allowed
on the following set of types. First operand is of type '<typeName>'.
Second operand is of type '<typeName>'. Third operand (start position)
is of type '<typeName>'. |
22018 | Invalid character string format for type <typeName>. |
22019 | Invalid escape sequence, '<sequenceName>'.
The escape string must be exactly one character. It cannot be a null or more
than one character. |
22025 | Escape character must be followed by escape character,
_, or %. It cannot be followed by any other character or be at the end of
the pattern. |
22027 | The built-in TRIM() function only supports a single
trim character. The LTRIM() and RTRIM() built-in functions support multiple
trim characters. |
22501 | An ESCAPE clause of NULL returns undefined results and
is not allowed. |
SQLSTATE | Texto da mensagem |
23502 | Column '<columnName>' cannot accept a NULL
value. |
23503 | <value> on table '<tableName>' caused
a violation of foreign key constraint '<constraintName>' for key <keyName>.
The statement has been rolled back. |
23505 | The statement was aborted because it would have caused
a duplicate key value in a unique or primary key constraint or unique index
identified by '<value>' defined on '<value>'. |
23513 | The check constraint '<constraintName>' was
violated while performing an INSERT or UPDATE on table '<tableName>'. |
SQLSTATE | Texto da mensagem |
24000 | Invalid cursor state - no current row. |
SQLSTATE | Texto da mensagem |
25000 | Invalid transaction state. |
25501 | Unable to set the connection read-only property in an
active transaction. |
25502 | An SQL data change is not permitted for a read-only
connection, user or database. |
25503 | DDL is not permitted for a read-only connection, user
or database. |
25505 | A read-only user or a user in a read-only database is
not permitted to disable read-only mode on a connection. |
SQLSTATE | Texto da mensagem |
28501 | Invalid database authorization property '<value>=<value>'.
|
28502 | The user name '<userName>' is not valid. |
28503 | User(s) '<userName>' must not be in both read-only
and full-access authorization lists. |
28504 | Repeated user(s) '<userName>' in access list
'<listName>'. |
SQLSTATE | Texto da mensagem |
38000 | The exception '<exception>' was thrown while
evaluating an expression. |
38001 | The external routine is not allowed to execute SQL statements.
|
38002 | The routine attempted to modify data, but the routine
was not defined as MODIFIES SQL DATA. |
38004 | The routine attempted to read data, but the routine
was not defined as READS SQL DATA. |
SQLSTATE | Texto da mensagem |
39004 | A NULL value cannot be passed to a method which takes
a parameter of primitive type '<type>'. |
SQLSTATE | Texto da mensagem |
3B001 | SAVEPOINT, <savepoint> does not exist or
is not active in the current transaction. |
3B002 | The maximum number of savepoints has been reached. |
3B501 | A SAVEPOINT with the passed name already exists in the
current transaction. |
3B502 | A RELEASE or ROLLBACK TO SAVEPOINT was specified, but
the savepoint does not exist. |
SQLSTATE | Texto da mensagem |
40001 | A lock could not be obtained due to a deadlock, cycle
of locks and waiters is: <value>. The selected victim is XID : <value>. |
40XC0 | Dead statement. This may be caused by catching a transaction
severity error inside this statement. |
40XD0 | Container has been closed. |
40XD1 | Container was opened in read-only mode. |
40XD2 | Container <containerName> cannot be opened;
it either has been dropped or does not exist. |
40XL1 | A lock could not be obtained within the time requested. |
40XL2 | A lock could not be obtained within the time requested.
The lockTable dump is: <tableDump>. |
40XT0 | An internal error was identified by RawStore module. |
40XT1 | An exception was thrown during transaction commit. |
40XT2 | An exception was thrown during rollback of a SAVEPOINT. |
40XT4 | An attempt was made to close a transaction that was
still active. The transaction has been aborted. |
40XT5 | Exception thrown during an internal transaction. |
40XT6 | Database is in quiescent state, cannot activate transaction.
Please wait for a moment until it exits the inactive state. |
40XT7 | Operation is not supported in an internal transaction.
|
SQLSTATE | Texto da mensagem |
42000 | Syntax error or access rule violation; see additional
errors for details. |
42601 | ALTER TABLE statement cannot add an IDENTITY column
to a table. |
42601 | In an ALTER TABLE statement, the column '<columnName>'
has been specified as NOT NULL and either the DEFAULT clause was not specified
or was specified as DEFAULT NULL. |
42605 | The number of arguments for function '<functionName>'
is incorrect. |
42606 | An invalid hexadecimal constant starting with '<number>'
has been detected. |
42610 | All the arguments to the COALESCE/VALUE function cannot
be parameters. The function needs at least one argument that is not a parameter. |
42611 | The length, precision, or scale attribute for column,
or type mapping '<value>' is not valid. |
42613 | Multiple or conflicting keywords involving the '<clause>'
clause are present. |
42621 | A check constraint or generated column that is defined
with '<value>' is invalid. |
42622 | The name '<name>' is too long. The maximum
length is '<maximumLength>'. |
42734 | Name '<name>' specified in context '<context>'
is not unique. |
42802 | The number of values assigned is not the same as the
number of specified or implied columns. |
42803 | An expression containing the column '<columnName>'
appears in the SELECT list and is not part of a GROUP BY clause. |
42815 | The replacement value for '<value>' is invalid. |
42815 | The data type, length or value of arguments '<firstArguement>'
and '<secondArguement>' is incompatible. |
42818 | Comparisons between '<value>' and '<value>'
are not supported. |
42820 | The floating point literal '<string>' contains
more than 30 characters. |
42821 | Columns of type '<type>' cannot hold values
of type '<type>'. |
42824 | An operand of LIKE is not a string, or the first operand
is not a column. |
42831 | '<columnName>' cannot be a column of a primary
key or unique key because it can contain null values. |
42834 | SET NULL cannot be specified because FOREIGN KEY '<key>'
cannot contain null values. |
42837 | ALTER TABLE '<tableName>' specified attributes
for column '<columnName>' that are not compatible with the existing
column. |
42846 | Cannot convert types '<type>' to '<type>'. |
42877 | A qualified column name '<columnName>' is
not allowed in the ORDER BY clause. |
42884 | No authorized routine named '<routineName>'
of type '<type>' having compatible arguments was found. |
42886 | '<value>' parameter '<value>' requires
a parameter marker '<parameter>'. |
42894 | DEFAULT value or IDENTITY attribute value is not valid
for column '<columnName>'. |
428C1 | Only one identity column is allowed in a table. |
428EK | The qualifier for a declared global temporary table
name must be SESSION. |
42903 | Invalid use of an aggregate function. |
42908 | The CREATE VIEW statement does not include a column
list. |
42915 | Foreign Key '<key>' is invalid because '<value>'. |
42916 | Synonym '<synonym2>' cannot be created for
'<synonym1>' as it would result in a circular synonym chain. |
42939 | An object cannot be created with the schema name '<nome-do-esquema>'.
|
42962 | Long column type column or parameter '<columnName>'
not permitted in declared global temporary tables or procedure definitions.
|
42972 | An ON clause associated with a JOIN operator is not
valid. |
42995 | The requested function does not apply to global temporary
tables. |
42X01 | Syntax error: <error>. |
42X02 | <value>. |
42X03 | Column name '<columnName>' is in more than
one table in the FROM list. |
42X04 | Column '<columnName>' is either not in any
table in the FROM list or appears within a join specification and is outside
the scope of the join specification or appears in a HAVING clause and is not
in the GROUP BY list. If this is a CREATE or ALTER TABLE statement then
'<columnName>' is not a column in the target table. |
42X05 | Table '<tableName>' does not exist. |
42X06 | Too many result columns specified for table '<tableName>'.
|
42X07 | Null is only allowed in a VALUES clause within an INSERT
statement. |
42X08 | The constructor for class '<className>' cannot
be used as an external virtual table because the class does not implement
'<constructorName>'. |
42X09 | The table or alias name '<tableName>' is used
more than once in the FROM list. |
42X10 | '<tableName>' is not an exposed table name
in the scope in which it appears. |
42X12 | Column name '<tableName>' appears more than
once in the CREATE TABLE statement. |
42X13 | Column name '<columnName>' appears more than
once in the column list of an INSERT statement. |
42X14 | '<columnName>' is not a column in table or
VTI '<value>'. |
42X15 | Column name '<columnName>' appears in a statement
without a FROM list. |
42X16 | Column name '<columnName>' appears multiple
times in the SET clause of an UPDATE statement. |
42X17 | In the Properties list of a FROM clause, the value '<value>'
is not valid as a joinOrder specification. Only the values FIXED and UNFIXED
are valid. |
42X19 | The WHERE or HAVING clause or CHECK CONSTRAINT definition
is a '<value>' expression. It must be a BOOLEAN expression. |
42X23 | Cursor <cursorName> is not updatable. |
42X25 | The '<functionName>' function is not allowed
on the '<type>' type. |
42X26 | The class '<className> for column '<columnName>'
does not exist or is inaccessible. This can happen if the class is not public.
|
42X28 | Delete table '<tableName>' is not target of
cursor '<cursorName>'. |
42X29 | Update table '<tableName>' is not the target
of cursor '<cursorName>'. |
42X30 | Cursor '<cursorName>' not found. Verify that
autocommit is OFF. |
42X31 | Column '<columnName>' is not in the FOR UPDATE
list of cursor '<cursorName>'. |
42X32 | The number of columns in the derived column list must
match the number of columns in table '<tableName>'. |
42X33 | The derived column list contains a duplicate column
name '<columnName>'. |
42X34 | There is a ? parameter in the select list. This is
not allowed. |
42X35 | It is not allowed for both operands of '<value>'
to be ? parameters. |
42X36 | The '<operator>' operator is not allowed to
take a ? parameter as an operand. |
42X37 | The unary '<operator>' operator is not allowed
on the '<type>' type. |
42X38 | 'SELECT *' only allowed in EXISTS and NOT EXISTS subqueries.
|
42X39 | Subquery is only allowed to return a single column. |
42X40 | A NOT statement has an operand that is not boolean .
The operand of NOT must evaluate to TRUE, FALSE, or UNKNOWN. |
42X41 | In the Properties clause of a FROM list, the property
'<propertyName>' is not valid (the property was being set to '<value>'). |
42X42 | Correlation name not allowed for column '<columnName>'
because it is part of the FOR UPDATE list. |
42X43 | The ResultSetMetaData returned for the class/object
'<className>' was null. In order to use this class as an external
virtual table, the ResultSetMetaData cannot be null. |
42X44 | Invalid length '<length>' in column specification.
|
42X45 | <type> is an invalid type for argument number <value>
of <value>. |
42X48 | Value '<value>' is not a valid precision for <value>. |
42X49 | Value '<value>' is not a valid integer literal. |
42X50 | No method was found that matched the method call <methodName>.<value>(<value>),
tried all combinations of object and primitive types and any possible type
conversion for any parameters the method call may have. The method might
exist but it is not public and/or static, or the parameter types are not method
invocation convertible. |
42X51 | The class '<className>' does not exist or
is inaccessible. This can happen if the class is not public. |
42X52 | Calling method ('<methodName>') using a receiver
of the Java primitive type '<type>" is not allowed. |
42X53 | The LIKE predicate can only have 'CHAR' or 'VARCHAR'
operands. Type '<type>' is not permitted. |
42X54 | The Java method '<methodName>' has a ? as
a receiver. This is not allowed. |
42X55 | Table name '<tableName>' should be the same
as '<value>'. |
42X56 | The number of columns in the view column list does not
match the number of columns in the underlying query expression in the view
definition for '<value>'. |
42X57 | The getColumnCount() for external virtual table '<tableName>'
returned an invalid value '<value>'. Valid values are greater than
or equal to 1. |
42X58 | The number of columns on the left and right sides of
the <tableName> must be the same. |
42X59 | The number of columns in each VALUES constructor must
be the same. |
42X60 | Invalid value '<value>' for insertMode property
specified for table '<tableName>'. |
42X61 | Types '<type>' and '<type>' are
not <value> compatible. |
42X62 | '<value>' is not allowed in the '<nome-do-esquema>'
schema. |
42X63 | The USING clause did not return any results. No parameters
can be set. |
42X64 | In the Properties list, the invalid value '<value>'
was specified for the useStatistics property. The only valid values are TRUE
or FALSE . |
42X65 | Index '<index>' does not exist. |
42X66 | Column name '<columnName>' appears more than
once in the CREATE INDEX statement. |
42X68 | No field '<fieldName>' was found belonging
to class '<className>'. The field might exist, but it is not public,
or the class does not exist or is not public. |
42X69 | It is not allowed to reference a field ('<fieldName>')
using a referencing expression of the Java primitive type '<type>'. |
42X72 | No static field '<fieldName>' was found belonging
to class '<className>'. The field might exist, but it is not public
and/or static, or the class does not exist or the class is not public. |
42X73 | Method resolution for signature <value>.<value>(<value>)
was ambiguous. (No single maximally specific method.) |
42X74 | Invalid CALL statement syntax. |
42X75 | No constructor was found with the signature <value>(<value>).
It may be that the parameter types are not method invocation convertible. |
42X76 | At least one column, '<columnName>', in the
primary key being added is nullable. All columns in a primary key must be
non-nullable. |
42X77 | Column position '<columnPosition>' is out
of range for the query expression. |
42X78 | Column '<columnName>' is not in the result
of the query expression. |
42X79 | Column name '<columnName>' appears more than
once in the result of the query expression. |
42X80 | VALUES clause must contain at least one element. Empty
elements are not allowed. |
42X82 | The USING clause returned more than one row. Only single-row
ResultSets are permissible. |
42X83 | The constraints on column '<columnName>' require
that it be both nullable and not nullable. |
42X84 | Index '<index>' was created to enforce constraint
'<constraintName>'. It can only be dropped by dropping the constraint. |
42X85 | Constraint '<constraintName>' is required
to be in the same schema as table '<tableName>'. |
42X86 | ALTER TABLE failed. There is no constraint '<constraintName>'
on table '<tableName>'. |
42X87 | At least one result expression (THEN or ELSE) of the
'<expressão>' expression must not be a '?'. |
42X88 | A conditional has a non-boolean operand. The operand
of a conditional must evaluate to TRUE, FALSE, or UNKNOWN. |
42X89 | Types '<type>' and '<type>' are
not type compatible. Neither type is assignable to the other type. |
42X90 | More than one primary key constraint specified for table
'<tableName>'. |
42X91 | Constraint name '<constraintName>' appears
more than once in the CREATE TABLE statement. |
42X92 | Column name '<columnName>' appears more than
once in a constraint's column list. |
42X93 | Table '<tableName>' contains a constraint
definition with column '<columnName>' which is not in the table. |
42X94 | <value> '<value>' does not exist. |
42X96 | The database classpath contains an unknown jar file
'<fileName>'. |
42X98 | Parameters are not allowed in a VIEW definition. |
42Y00 | Class '<className>' does not implement org.apache.derby.iapi.db.AggregateDefinition
and thus cannot be used as an aggregate expression. |
42Y01 | Constraint '<constraintName>' is invalid.
|
42Y03 | '<statement>' is not recognized as a function
or procedure. |
42Y04 | Cannot create a procedure or function with EXTERNAL
NAME '<name>' because it is not a list separated by periods. The
expected format is <fulljavapath>.<method name>. |
42Y05 | There is no Foreign Key named '<key>'. |
42Y07 | Schema '<nome-do-esquema>' does not exist. |
42Y08 | Foreign key constraints are not allowed on system tables. |
42Y09 | Void methods are only allowed within a CALL statement. |
42Y10 | A table constructor that is not in an INSERT statement
has all ? parameters in one of its columns. For each column, at least one
of the rows must have a non-parameter. |
42Y11 | A join specification is required with the '<clauseName>'
clause. |
42Y12 | The ON clause of a JOIN is a '<expressionType>'
expression. It must be a BOOLEAN expression. |
42Y13 | Column name '<columnName>' appears more than
once in the CREATE VIEW statement. |
42Y16 | No public static method '<methodName>' was
found in class '<className>'. The method might exist, but it is
not public, or it is not static. |
42Y19 | '<columnName>' appears multiple times in the
GROUP BY list. Columns in the GROUP BY list must be unambiguous. |
42Y22 | Aggregate <aggregateType> cannot operate on
type <type>. |
42Y23 | Incorrect JDBC type info returned for column <columnName>.
|
42Y24 | View '<viewName>' is not updatable. (Views
are currently not updatable.) |
42Y25 | '<tableName>' is a system table. Users are
not allowed to modify the contents of this table. |
42Y27 | Parameters are not allowed in the trigger action. |
42Y29 | The SELECT list of a non-grouped query contains at least
one invalid expression. When the SELECT list contains at least one aggregate
then all entries must be valid aggregate expressions. |
42Y30 | The SELECT list of a grouped query contains at least
one invalid expression. If a SELECT list has a GROUP BY, the list may only
contain grouping columns and valid aggregate expressions. |
42Y32 | Aggregator class '<className> aggregate '<aggregateName>'
on type <type> does not implement com.ibm.db2j.aggregates.Aggregator.
|
42Y33 | Aggregate <aggregateName> contains one or
more aggregates. |
42Y34 | Column name '<columnName>' matches more than
one result column in table '<tableName>'. |
42Y35 | Column reference '<reference>' is invalid.
When the SELECT list contains at least one aggregate then all entries must
be valid aggregate expressions. |
42Y36 | Column reference '<value>' is invalid. For
a SELECT list with a GROUP BY, the list may only contain grouping columns
and valid aggregate expressions. |
42Y37 | '<value>' is a Java primitive and cannot be
used with this operator. |
42Y38 | is not permitted on an insert where the target table, '<tableName>', is referenced in the SELECT. |
42Y39 | '<value>' may not appear in a CHECK CONSTRAINT
definition because it may return non-deterministic results. |
42Y40 | '<value>' appears multiple times in the UPDATE
OF column list for trigger '<triggerName>'. |
42Y41 | '<value>' cannot be directly invoked via EXECUTE
STATEMENT because it is part of a trigger. |
42Y42 | Scale '<scaleValue>' is not a valid scale
for a <value>. |
42Y43 | Scale '<scaleValue>' is not a valid scale
with precision of '<precision>'. |
42Y44 | Invalid key '<key>' specified in the Properties
list of a FROM list. The case-sensitive keys that are currently supported
are '<key>'. |
42Y45 | VTI '<value>' cannot be bound because it is
a special trigger VTI and this statement is not part of a trigger action or
WHEN clause. |
42Y46 | Invalid Properties list in FROM list. There is no index
'<index>' on table '<tableName>'. |
42Y48 | Invalid Properties list in FROM list. Either there
is no named constraint '<constraintName>' on table '<tableName>'
or the constraint does not have a backing index. |
42Y49 | Multiple values specified for property key '<key>'.
|
42Y50 | Properties list for table '<tableName>' may
contain values for index or for constraint but not both. |
42Y55 | '<value>' cannot be performed on '<value>'
because it does not exist. |
42Y56 | Invalid join strategy '<strategyValue>' specified
in Properties list on table '<tableName>'. The currently supported
values for a join strategy are: and . |
42Y58 | NumberFormatException occurred when converting value
'<value>' for optimizer override '<value>'. |
42Y59 | Invalid value, '<value>', specified for hashInitialCapacity
override. Value must be greater than 0. |
42Y60 | Invalid value, '<value>', specified for hashLoadFactor
override. Value must be greater than 0.0 and less than or equal to 1.0. |
42Y61 | Invalid value, '<value>' specified for hashMaxCapacity
override. Value must be greater than 0. |
42Y62 | '<value>' is not allowed on '<value>'
because it is a view. |
42Y63 | Hash join requires an optimizable equijoin predicate
on a column in the selected index or heap. An optimizable equijoin predicate
does not exist on any column in table or index '<index>'. Use the
'index' optimizer override to specify such an index or the heap on table '<tableName>'. |
42Y64 | bulkFetch value of '<value>' is invalid. The
minimum value for bulkFetch is 1. |
42Y65 | bulkFetch is not permitted on '<joinType>'
joins. |
42Y66 | bulkFetch is not permitted on updatable cursors. |
42Y67 | Schema '<nome-do-esquema>' cannot be dropped. |
42Y69 | No valid execution plan was found for this statement.
This may have one of two causes: either you specified a hash join strategy
when hash join is not allowed (no optimizable equijoin) or you are attempting
to join two external virtual tables, each of which references the other, and
so the statement cannot be evaluated. |
42Y70 | The user specified an illegal join order. This could
be caused by a join column from an inner table being passed as a parameter
to an external virtual table. |
42Y71 | System function or procedure '<procedureName>'
cannot be dropped. |
42Y82 | System generated stored prepared statement '<statement>'
that cannot be dropped using DROP STATEMENT. It is part of a trigger. |
42Y83 | An untyped null is not permitted as an argument to aggregate <aggregateName>.
Please cast the null to a suitable type. |
42Y84 | '<value>' may not appear in a DEFAULT definition.
|
42Y85 | The DEFAULT keyword is only allowed in a VALUES clause
when the VALUES clause appears within an INSERT statement. |
42Y90 | FOR UPDATE is not permitted in this type of statement.
|
42Y91 | The USING clause is not permitted in an EXECUTE STATEMENT
for a trigger action. |
42Y92 | <triggerName> triggers may only reference <value>
transition variables/tables. |
42Y93 | Illegal REFERENCING clause: only one name is permitted
for each type of transition variable/table. |
42Y94 | An AND or OR has a non-boolean operand. The operands
of AND and OR must evaluate to TRUE, FALSE, or UNKNOWN. |
42Y95 | The '<operatorName>' operator with a left
operand type of '<operandType>' and a right operand type of '<operandType>'
is not supported. |
42Y97 | Invalid escape character at line '<lineNumber>',
column '<columnName>'. |
42Z02 | Multiple DISTINCT aggregates are not supported at this
time. |
42Z07 | Aggregates are not permitted in the ON clause. |
42Z08 | Bulk insert replace is not permitted on '<value>'
because it has an enabled trigger (<value>). |
42Z15 | Invalid type specified for column '<columnName>'.
The type of a column may not be changed. |
42Z16 | Only columns of type VARCHAR may have their length altered. |
42Z17 | Invalid length specified for column '<columnName>'.
Length must be greater than the current column length. |
42Z18 | Column '<columnName>' is part of a foreign
key constraint '<constraintName>'. To alter the length of this column,
you should drop the constraint first, perform the ALTER TABLE, and then recreate
the constraint. |
42Z19 | Column '<columnName>' is being referenced
by at least one foreign key constraint '<constraintName>'. To alter
the length of this column, you should drop referencing constraints, perform
the ALTER TABLE, and then recreate the constraints. |
42Z20 | Column '<columnName>' cannot be made nullable.
It is part of a primary key, which cannot have any nullable columns. |
42Z21 | Invalid increment specified for identity for column
'<columnName>'. Increment cannot be zero. |
42Z22 | Invalid type specified for identity column '<columnName>'.
The only valid types for identity columns are BIGINT, INT and SMALLINT. |
42Z23 | Attempt to modify an identity column '<columnName>'. |
42Z24 | Overflow occurred in identity value for column '<columnName>'
in table '<tableName>'. |
42Z25 | INTERNAL ERROR identity counter. Update was called without
arguments with . |
42Z26 | A column, '<columnName>', with an identity
default cannot be made nullable. |
42Z27 | A nullable column, '<columnName>', cannot
be modified to have identity default. |
42Z50 | INTERNAL ERROR: Unable to generate code for <value>. |
42Z53 | INTERNAL ERROR: Do not know what type of activation
to generate for node choice <value>. |
42Z90 | Class '<className>' does not return an updatable
ResultSet. |
42Z91 | subquery |
42Z92 | repeatable read |
42Z93 | Constraints '<constraintName>' and '<constraintName>'
have the same set of columns, which is not allowed. |
42Z97 | Renaming column '<columnName>' will cause
check constraint '<constraintName>' to break. |
42Z99 | String or Hex literal cannot exceed 64K. |
42Z9A | read uncommitted |
42Z9B | The external virtual table interface does not support
BLOB or CLOB columns. '<value>' column '<value>'. |
42Z9D | '<statement>' statements are not allowed in
'<triggerName>' triggers. |
42Z9E | Constraint '<constraintName>' is not a <value>
constraint. |
42Z9F | Too many indexes (<index>) on the table <tableName>.
The limit is <number>. |
SQLState | Texto da mensagem |
X0X02 | Table '<tableName>' cannot be locked in '<mode>'
mode. |
X0X03 | Invalid transaction state - held cursor requires same
isolation level |
X0X05 | Table '<tableName>' does not exist. |
X0X07 | Cannot drop jar file '<fileName>' because
its on your db2j.database.classpath '<classpath>'. |
X0X0E | The column position '<columnPosition>' listed
in the auto-generated column selection array was not found in the insert table. |
X0X0F | Column name '<columnName>' listed in auto-generated
column selection array not found in the insert table. |
X0X10 | The USING clause returned more than one row; only single-row
ResultSets are permissible. |
X0X11 | The USING clause did not return any results so no parameters
can be set. |
X0X13 | Jar file '<fileName>' does not exist in schema
'<nome-do-esquema>'. |
X0X14 | Binding directly to an XML value is not allowed; try
using XMLPARSE. |
X0X15 | XML values are not allowed in top-level result sets;
try using XMLSERIALIZE. |
X0X16 | XML syntax error; missing keyword(s): '<keywords>'. |
X0X17 | Invalid target type for XMLSERIALIZE: '<value>'. |
X0X18 | XML feature not supported: '<featureName>'. |
X0X57 | An attempt was made to put a Java value of type '<type>'
into a SQL value, but there is no corresponding SQL type. The Java value
is probably the result of a method call or field access. |
X0X60 | A cursor with name '<cursorName>' already
exists. |
X0X61 | The values for column '<value>' in index '<value>'
and table '<value>.<value>' do not match for row location <value>.
The value in the index is '<value>', while the value in the base
table is '<value>'. The full index key, including the row location,
is '<value>'. The suggested corrective action is to recreate the
index. |
X0X62 | Inconsistency found between table '<tableName>'
and index '<index>'. Error when trying to retrieve row location
'<rowLocation>' from the table. The full index key, including the
row location, is '<index>'. The suggested corrective action is to
recreate the index. |
X0X63 | Got IOException '<value>'. |
X0X67 | Columns of type '<type>' may not be used in
CREATE INDEX, ORDER BY, GROUP BY, UNION, INTERSECT, EXCEPT or DISTINCT statements
because comparisons are not supported for that type. |
X0X81 | <value> '<value>' does not exist.
|
X0X85 | Index '<index>' was not created because '<type>'
is not a valid index type. |
X0X86 | 0 is an invalid parameter value for . |
X0X87 | cannot be called when the cursor is not positioned on a row. |
X0X95 | Operation '<operation>' cannot be performed
on object '<object>' because there is an open ResultSet dependent
on that object. |
X0X99 | Index '<index>' does not exist. |
X0XML | Encountered unexpected error while processing XML; see
next exception for details. |
SQLSTATE | Texto da mensagem |
X0Y16 | '<value>' is not a view. If it is a table,
then use DROP TABLE instead. |
X0Y23 | Operation '<operation>' cannot be performed
on object '<object>' because VIEW '<viewName>' is dependent
on that object. |
X0Y24 | Operation '<operation>' cannot be performed
on object '<object>' because STATEMENT '<statement>' is
dependent on that object. |
X0Y25 | Operation '<value>' cannot be performed on
object '<value>' because <value> '<value>' is
dependent on that object. |
X0Y26 | Index '<index>' is required to be in the same
schema as table '<tableName>'. |
X0Y28 | Index '<index>' cannot be created on system
table '<tableName>'. Users cannot create indexes on system tables. |
X0Y32 | <value> '<value>' already exists
in <value> '<value>'. |
X0Y38 | Cannot create index '<index>' because table
'<tableName>' does not exist. |
X0Y41 | Constraint '<constraintName>' is invalid because
the referenced table <tableName> has no primary key. Either add
a primary key to <tableName> or explicitly specify the columns of
a unique constraint that this foreign key references. |
X0Y42 | Constraint '<constraintName>' is invalid:
the types of the foreign key columns do not match the types of the referenced
columns |
X0Y43 | Constraint '<value>' is invalid: the number
of columns in <value> (<value>) does not match the number
of columns in the referenced key (<value>). |
X0Y44 | Constraint '<constraintName>' is invalid:
there is no unique or primary key constraint on table '<tableName>'
that matches the number and types of the columns in the foreign key.
|
X0Y45 | Foreign key constraint '<constraintName>'
cannot be added to or enabled on table <tableName> because one or
more foreign keys do not have matching referenced keys. |
X0Y46 | Constraint '<constraintName>' is invalid:
referenced table <tableName> does not exist. |
X0Y54 | Schema '<nome-do-esquema>' cannot be dropped because
it is not empty. |
X0Y55 | The number of rows in the base table does not match
the number of rows in at least 1 of the indexes on the table. Index '<value>'
on table '<value>.<value>' has <value> rows,
but the base table has <value> rows. The suggested corrective action
is to recreate the index. |
X0Y56 | '<value>' is not allowed on the System table
'<value>'. |
X0Y57 | A non-nullable column cannot be added to table '<tableName>'
because the table contains at least one row. Non-nullable columns can only
be added to empty tables. |
X0Y58 | Attempt to add a primary key constraint to table '<tableName>'
failed because the table already has a constraint of that type. A table can
only have a single primary key constraint. |
X0Y59 | Attempt to add or enable constraint(s) on table '<tableName>'
failed because the table contains <rowName> row(s) that violate
the following check constraint(s): <constraintName>. |
X0Y63 | The command on table '<tableName>' failed
because null data was found in the primary key or unique constraint/index
column(s). All columns in a primary or unique index key must not be null.
|
X0Y66 | Cannot issue commit in a nested connection when there
is a pending operation in the parent connection. |
X0Y67 | Cannot issue rollback in a nested connection when there
is a pending operation in the parent connection. |
X0Y68 | <value> '<value>' already exists.
|
X0Y69 | <value> is not permitted because trigger <triggerName>
is active on <value>. |
X0Y70 | INSERT, UPDATE and DELETE are not permitted on table <tableName>
because trigger <triggerName> is active. |
X0Y71 | Transaction manipulation such as SET ISOLATION is not
permitted because trigger <triggerName> is active. |
X0Y72 | Bulk insert replace is not permitted on '<value>'
because it has an enabled trigger (<value>). |
X0Y77 | Cannot issue set transaction isolation statement on
a global transaction that is in progress because it would have implicitly
committed the global transaction. |
X0Y78 | Statement.executeQuery() cannot be called with a statement
that returns a row count. |
X0Y79 | Statement.executeUpdate() cannot be called with a statement
that returns a ResultSet. |
X0Y80 | ALTER table '<tableName>' failed. Null data
found in column '<columnName>'. |
X0Y83
| WARNING: While deleting a row from a table the index
row for base table row <rowName> was not found in index with conglomerate
id <id>. This problem has automatically been corrected as part
of the delete operation. |
SQLSTATE | Texto da mensagem |
XBCA0 | Cannot create new object with key <key> in <cache>
cache. The object already exists in the cache. |
SQLSTATE | Texto da mensagem |
XBCM1 | Java linkage error thrown during load of generated class <className>. |
XBCM2 | Cannot create an instance of generated class <className>. |
XBCM3 | Method <methodName> () does not exist in generated
class <className>. |
SQLSTATE | Texto da mensagem |
XBCX0 | Exception from Cryptography provider. See next exception
for details. |
XBCX1 | Initializing cipher with illegal mode, must be either
ENCRYPT or DECRYPT. |
XBCX2 | Initializing cipher with a boot password that is too
short. The password must be at least <number> characters long.
|
XBCX5 | Cannot change boot password to null. |
XBCX6 | Cannot change boot password to a non-string serializable
type. |
XBCX7 | Wrong format for changing boot password. Format must
be : old_boot_password, new_boot_password. |
XBCX8 | Cannot change boot password for a non-encrypted database.
|
XBCX9 | Cannot change boot password for a read-only database.
|
XBCXA | Wrong boot password. |
XBCXB | Bad encryption padding '<value>' or padding
not specified. 'NoPadding' must be used. |
XBCXC | Encryption algorithm '<algorithmName>' does
not exist. Please check that the chosen provider '<providerName>'
supports this algorithm. |
XBCXD | The encryption algorithm cannot be changed after the
database is created. |
XBCXE | The encryption provider cannot be changed after the
database is created. |
XBCXF | The class '<className>' representing the encryption
provider cannot be found. |
XBCXG | The encryption provider '<providerName>' does
not exist. |
XBCXH | The encryptionAlgorithm '<algorithmName>'
is not in the correct format. The correct format is algorithm/feedbackMode/NoPadding.
|
XBCXI | The feedback mode '<mode>' is not supported.
Supported feedback modes are CBC, CFB, OFB and ECB. |
XBCXJ | The application is using a version of the Java Cryptography
Extension (JCE) earlier than 1.2.1. Please upgrade to JCE 1.2.1 and try the
operation again. |
XBCXK | The given encryption key does not match the encryption
key used when creating the database. Please ensure that you are using the
correct encryption key and try again. |
XBCXL | The verification process for the encryption key was
not successful. This could have been caused by an error when accessing the
appropriate file to do the verification process. See next exception for details.
|
SQLSTATE | Texto da mensagem |
XBM01 | Startup failed due to an exception. See next exception
for details. |
XBM02 | Startup failed due to missing functionality for <value>.
Please ensure your classpath includes the correct Derby Derby
software. |
XBM05 | Startup failed due to missing product version information
for <value>. |
XBM06 | Startup failed. An encrypted database cannot be accessed
without the correct boot password. |
XBM07 | Startup failed. Boot password must be at least 8 bytes
long. |
XBM08 | Could not instantiate <value> StorageFactory
class <value>. |
XBM0G | Failed to start encryption engine. Please make sure
you are running Java 2 and have downloaded an encryption provider such as
jce and put it in your classpath. |
XBM0H | Directory <directoryName> cannot be created.
|
XBM0I | Directory <directoryName> cannot be removed.
|
XBM0J | Directory <directoryName> already exists.
|
XBM0K | Unknown sub-protocol for database name <databaseName>.
|
XBM0L | Specified authentication scheme class <className>
does implement the authentication interface <interfaceName>. |
XBM0M | Error creating instance of authentication scheme class <className>.
|
XBM0N | JDBC Driver registration with java.sql.DriverManager
failed. See next exception for details. |
XBM0P | Service provider is read-only. Operation not permitted.
|
XBM0Q | File <fileName> not found. Please make sure
that backup copy is the correct one and it is not corrupted.
|
XBM0R | Unable to remove file <fileName>. |
XBM0S | Unable to rename file '<fileName>' to 'fileName>'
|
XBM0T | Ambiguous sub-protocol for database name <databaseName>. |
XBM0U | No class was registered for identifier <identifierName>. |
XBM0V | An exception was thrown while loading class <className>
registered for identifier <identifierName>. |
XBM0W | An exception was thrown while creating an instance of
class <className> registered for identifier <identifierName>.
|
XBM0X | Supplied territory description '<value>' is
invalid, expecting ln[_CO[_variant]] ln=lower-case two-letter ISO-639 language
code, CO=upper-case two-letter ISO-3166 country codes, see java.util.Locale.
|
XBM0Y | Backup database directory <directoryName>
not found. Please make sure that the specified backup path is right.
|
XBM0Z | Unable to copy file '<value>' to '<value>'.
Please make sure that there is enough space and permissions are correct.
|
SQLSTATE | Texto da mensagem |
XCL01 | ResultSet does not return rows. Operation <operationName>
not permitted. |
XCL05 | Activation closed. Operation <operationName>
not permitted. |
XCL07 | Cursor '<cursorName>' is closed. Verify that
autocommit is OFF. |
XCL08 | Cursor '<cursorName>' is not on a row. |
XCL09 | An Activation was passed to the '<methodName>'
method that does not match the PreparedStatement. |
XCL10 | A PreparedStatement has been recompiled and the parameters
have changed. If you are using JDBC you must prepare the statement again. |
XCL12 | An attempt was made to put a data value of type '<type>'
into a data value of type '<type>'. |
XCL13 | The parameter position '<parameterPosition>'
is out of range. The number of parameters for this prepared statement is
'<number>'. |
XCL14 | The column position '<value>' is out of range.
The number of columns for this ResultSet is '<number>'. |
XCL15 | A ClassCastException occurred when calling the compareTo()
method on an object '<object>'. The parameter to compareTo() is
of class 'className>'. |
XCL16 | ResultSet not open. Operation '<operation>'
not permitted. Verify that autocommit is OFF. |
XCL17 | Statement not allowed in this database. |
XCL19 | Missing row in table '<tableName>' for key
'<key>'. |
XCL20 | Catalogs at version level '<versionLevel>'
cannot be upgraded to version level '<versionLevel>'. |
XCL21 | You are trying to execute a Data Definition statement
(CREATE, DROP, or ALTER) while preparing a different statement. This is not
allowed. It can happen if you execute a Data Definition statement from within
a static initializer of a Java class that is being used from within a SQL
statement. |
XCL22 | Parameter <parameterName> cannot be registered
as an OUT parameter because it is an IN parameter. |
XCL23 | SQL type number '<type>' is not a supported
type by registerOutParameter(). |
XCL24 | Parameter <parameterName> appears to be an
output parameter, but it has not been so designated by registerOutParameter().
If it is not an output parameter, then it has to be set to type <type>.
|
XCL25 | Parameter <parameterName> cannot be registered
to be of type <type> because it maps to type <type> and
they are incompatible. |
XCL26 | Parameter <parameterName> is not an output
parameter. |
XCL27 | Return output parameters cannot be set. |
XCL30 | An IOException was thrown when reading a '<value>'
from an InputStream. |
XCL31 | Statement closed. |
XCL33 | The table cannot be defined as a dependent of table <tableName>
because of delete rule restrictions. (The relationship is self-referencing
and a self-referencing relationship already exists with the SET NULL delete
rule.) |
XCL34 | The table cannot be defined as a dependent of table <tableName>
because of delete rule restrictions. (The relationship forms a cycle of two
or more tables that cause the table to be delete-connected to itself (all
other delete rules in the cycle would be CASCADE)). |
XCL35 | The table cannot be defined as a dependent of table <tableName>
because of delete rule restrictions. (The relationship causes the table to
be delete-connected to the indicated table through multiple relationships
and the delete rule of the existing relationship is SET NULL). |
XCL36 | The delete rule of foreign key must be <ruleName>.
(The referential constraint is self-referencing and an existing self-referencing
constraint has the indicated delete rule (NO ACTION, RESTRICT or CASCADE).)
|
XCL37 | The delete rule of foreign key must be <ruleName>.
(The referential constraint is self-referencing and the table is dependent
in a relationship with a delete rule of CASCADE.) |
XCL38 | The delete rule of foreign key must be <ruleName>.
(The relationship would cause the table to be delete-connected to the same
table through multiple relationships and such relationships must have the
same delete rule (NO ACTION, RESTRICT or CASCADE).) |
XCL39 | The delete rule of foreign key cannot be CASCADE. (A
self-referencing constraint exists with a delete rule of SET NULL, NO ACTION
or RESTRICT.) |
XCL40 | The delete rule of foreign key cannot be CASCADE. (The
relationship would form a cycle that would cause a table to be delete-connected
to itself. One of the existing delete rules in the cycle is not CASCADE, so
this relationship may be definable if the delete rule is not CASCADE.) |
XCL41 | the delete rule of foreign key can not be CASCADE. (The
relationship would cause another table to be delete-connected to the same
table through multiple paths with different delete rules or with delete rule
equal to SET NULL.) |
XCL42 | CASCADE |
XCL43 | SET NULL |
XCL44 | RESTRICT |
XCL45 | NO ACTION |
XCL46 | SET DEFAULT |
XCL47 | Use of '<value>' requires database to be upgraded
from version <versionNumber> to version <versionNumber>
or later. |
XCL48 | TRUNCATE TABLE is not permitted on '<value>'
because unique/primary key constraints on this table are referenced by enabled
foreign key constraints from other tables. |
XCL49 | TRUNCATE TABLE is not permitted on '<value>'
because it has an enabled DELETE trigger (<value>). |
XCL50 | Upgrading the database from a previous version is not
supported. The database being accessed is at version level 'versionNumber>',
this software is at version level '<versionNumber>'. |
XCL51 | The requested function cannot reference tables in SESSION
schema. |
SQLSTATE | Texto da mensagem |
XCW00 | Unsupported upgrade from '<value>' to '<value>'. |
SQLSTATE | Texto da mensagem |
XCXA0 | Invalid identifier. |
SQLSTATE | Texto da mensagem |
XCXB0 | Invalid database classpath: '<classpath>'.
|
SQLSTATE | Texto da mensagem |
XCXC0 | Invalid id list. |
SQLSTATE | Texto da mensagem |
XCXE0 | You are trying to do an operation that uses the territory
of the database, but the database does not have a territory. |
SQLSTATE | Texto da mensagem |
XCY00 | Invalid value for property '<value>'='<value>'. |
XCY02 | The requested property change is not supported '<value>'='<value>'.
|
XCY03 | Required property '<propertyName>' has not
been set. |
SQLSTATE | Texto da mensagem |
XCZ00 | Unknown permission '<permissionName>'. |
XCZ01 | Unknown user '<userName>'. |
XCZ02 | Invalid parameter '<value>'='<value>'. |
SQLSTATE | Texto da mensagem |
XD003 | Unable to restore dependency from disk. DependableFinder
= '<value>'. Further information: '<value>'. |
XD004 | Unable to store dependencies. |
SQLSTATE | Texto da mensagem |
XIE01 | Connection was null. |
XIE03 | Data found on line <lineNumber> for column <columnName>
after the stop delimiter. |
XIE04 | Data file not found: <fileName>. |
XIE05 | Data file cannot be null. |
XIE06 | Entity name was null. |
XIE07 | Field and record separators cannot be substrings of
each other. |
XIE08 | There is no column named: <columnName>. |
XIE09 | The total number of columns in the row is: <number>.
|
XIE0B | Column '<columnName>' in the table is of type <type>,
it is not supported by the import/export feature. |
XIE0D | Cannot find the record separator on line <lineNumber>. |
XIE0E | Read endOfFile at unexpected place on line <lineNumber.
|
XIE0I | An IOException occurred while writing data to the file. |
XIE0J | A delimiter is not valid or is used more than once. |
XIE0K | The period was specified as a character string delimiter.
|
XIE0M | Table '<tableName>' does not exist. |
SQLSTATE | Texto da mensagem |
XJ004 | Database '<databaseName>' not found. |
XJ009 | Use of CallableStatement required for stored procedure
call or use of output parameters: <value> |
XJ010 | Cannot issue savepoint when autoCommit is on. |
XJ011 | Cannot pass null for savepoint name. |
XJ012 | '<value>' already closed. |
XJ013 | No ID for named savepoints. |
XJ014 | No name for un-named savepoints. |
XJ015 | Derby system shutdown. |
XJ016 | Method '<methodName>' not allowed on prepared
statement. |
XJ017 | No savepoint command allowed inside the trigger code.
|
XJ018 | Column name cannot be null. |
XJ020 | Object type not convertible to TYPE '<typeName>',
invalid java.sql.Types value, or object was null. |
XJ022 | Unable to set stream: '<name>'. |
XJ023 | Input stream held less data than requested length. |
XJ025 | Input stream cannot have negative length. |
XJ028 | The URL '<urlValue>' is not properly formed. |
XJ030 | Cannot set AUTOCOMMIT ON when in a nested connection.
|
XJ040 | Failed to start database '<databaseName>',
see the next exception for details. |
XJ041 | Failed to create database '<databaseName>',
see the next exception for details. |
XJ042 | '<value>' is not a valid value for property
'<propertyName>'. |
XJ044 | '<value>' is an invalid scale. |
XJ045 | Invalid or (currently) unsupported isolation level,
'<value>', passed to Connection.setTransactionIsolationLevel().
The currently supported values are java.sql.Connection.TRANSACTION_SERIALIZABLE,
java.sql.Connection.TRANSACTION_REPEATABLE_READ, java.sql.Connection.TRANSACTION_READ_COMMITTED,
and java.sql.Connection.TRANSACTION_READ_UNCOMMITTED. |
XJ049 | Conflicting create attributes specified. |
XJ04B | Batch cannot contain a command that attempts to return
a result set. |
XJ04C | CallableStatement batch cannot contain output parameters. |
XJ056 | Cannot set AUTOCOMMIT ON when in an XA connection. |
XJ057 | Cannot commit a global transaction using the Connection.
Commit processing must go through XAResource interface. |
XJ058 | Cannot rollback a global transaction using the Connection,
commit processing must go through XAResource interface. |
XJ059 | Cannot close a connection while a global transaction
is still active. |
XJ05B | JDBC attribute '<attributeName>' has an invalid
value '<value>', Valid values are '<value>'. |
XJ05C | Cannot set holdability ResultSet.HOLD_CURSORS_OVER_COMMIT
for a global transaction. |
XJ061 | The '<valueName>' method is only allowed on
scroll cursors. |
XJ062 | Invalid parameter value '<value>' for ResultSet.setFetchSize(int
rows). |
XJ063 | Invalid parameter value '<value>' for Statement.setMaxRows(int
maxRows). Parameter value must be >= 0. |
XJ064 | Invalid parameter value '<value>' for setFetchDirection(int
direction). |
XJ065 | Invalid parameter value '<value>' for Statement.setFetchSize(int
rows). |
XJ066 | Invalid parameter value '<value>' for Statement.setMaxFieldSize(int
max). |
XJ067 | SQL text pointer is null. |
XJ068 | Only executeBatch and clearBatch allowed in the middle
of a batch. |
XJ069 | No SetXXX methods allowed in case of USING execute statement. |
XJ070 | Negative or zero position argument '<argument>'
passed in a Blob or Clob method. |
XJ071 | Zero or negative length argument '<argument>'
passed in a BLOB or CLOB method. |
XJ072 | Null pattern or searchStr passed in to a BLOB or CLOB
position method. |
XJ073 | The data in this BLOB or CLOB is no longer available.
The BLOB or CLOB's transaction may be committed, or its connection is closed. |
XJ076 | The position argument '<argument>' exceeds
the size of the BLOB/CLOB. |
XJ077 | Got an exception when trying to read the first byte/character
of the BLOB/CLOB pattern using getBytes/getSubString. |
XJ080 | USING execute statement passed <numparameters>
parameters rather than <numparameters>. |
XJ081 | Conflicting create/restore/recovery attributes specified. |
XJ081 | Invalid value '<value>' passed as parameter
'<parameterName>' to method '<moduleName>'. |
SQLSTATE | Texto da mensagem |
XSAI2 | The conglomerate (<value>) requested does
not exist. |
XSAI3 | Feature not implemented. |
SQLSTATE | Texto da mensagem |
XSAM0 | Exception encountered while trying to boot module for
'<value>'. |
XSAM2 | There is no index or conglomerate with conglom id '<conglomID>'
to drop. |
XSAM3 | There is no index or conglomerate with conglom id '<conglomID>'. |
XSAM4 | There is no sort called '<sortName>'. |
XSAM5 | Scan must be opened and positioned by calling next()
before making other calls. |
XSAM6 | Record <recordnumber> on page <page>
in container <containerName> not found. |
SQLSTATE | Texto da mensagem |
XSAS0 | A scan controller interface method was called which
is not appropriate for a scan on a sort. |
XSAS1 | An attempt was made to fetch a row before the beginning
of a sort or after the end of a sort. |
XSAS3 | The type of a row inserted into a sort does not match
the sorts template. |
XSAS6 | Could not acquire resources for sort. |
SQLSTATE | Texto da mensagem |
XSAX0 | XA protocol violation. |
XSAX1 | An attempt was made to start a global transaction with
an Xid of an existing global transaction. |
SQLSTATE | Texto da mensagem |
XSCB0 | Could not create container. |
XSCB1 | Container <containerName> not found. |
XSCB2 | The required property <propertyName> not found
in the property list given to createConglomerate() for a btree secondary index. |
XSCB3 | Unimplemented feature. |
XSCB4 | A method on a btree open scan was called prior to positioning
the scan on the first row (that is, no next() call has been made yet). The
current state of the scan is (<value>). |
XSCB5 | During logical undo of a btree insert or delete, the
row could not be found in the tree. |
XSCB6 | Limitation: Record of a btree secondary index cannot
be updated or inserted due to lack of space on the page. Use the parameters
derby.storage.pageSize and/or derby.storage.pageReservedSpace to work around
this limitation. |
XSCB7 | An internal error was encountered during a btree scan
- current_rh is null = <value>, position key is null = <value>. |
XSCB8 | The btree conglomerate <value> is closed. |
XSCB9 | Reserved for testing. |
SQLSTATE | Texto da mensagem |
XSCG0 | Could not create a template. |
SQLSTATE | Texto da mensagem |
XSCH0 | Could not create container. |
XSCH1 | Container <containerName> not found. |
XSCH4 | Conglomerate could not be created. |
XSCH5 | In a base table there was a mismatch between the requested
column number <columnnumber> and the maximum number of columns <maxcol>. |
XSCH6 | The heap container with container id <containerID>
is closed. |
XSCH7 | The scan is not positioned. |
XSCH8 | The feature is not implemented. |
SQLSTATE | Texto da mensagem |
XSDA1 | An attempt was made to access an out of range slot on
a page. |
XSDA2 | An attempt was made to update a deleted record. |
XSDA3 | Limitation: Record cannot be updated or inserted due
to lack of space on the page. Use the parameters derby.storage.pageSize and/or
derby.storage.pageReservedSpace to work around this limitation. |
XSDA4 | An unexpected exception was thrown. |
XSDA5 | An attempt was made to undelete a record that was not
deleted. |
XSDA6 | Column <column> of row is null, it needs to
be set to point to an object. |
XSDA7 | Restore of a serializable or SQLData object of class <className>,
attempted to read more data than was originally stored. |
XSDA8 | Exception during restore of a serializable or SQLData
object of class <className>. |
XSDA9 | Class not found during restore of a serializable or
SQLData object of class <className>. |
XSDAA | Illegal time stamp <timestamp>, either time
stamp is from a different page or of incompatible implementation. |
XSDAB | Cannot set a null time stamp. |
XSDAC | Attempt to move either rows or pages from one container
to another. |
XSDAD | Attempt to move zero rows from one page to another.
|
XSDAE | Can only make a record handle for special record handle
IDs. |
XSDAF | Using special record handle as if it were a normal record
handle. |
XSDAG | The allocation nested top transaction cannot open the
container |
XSDAI | Page <page> being removed is already locked
for deallocation. |
XSDAJ | Exception during write of a serializable or SQLData
object. |
XSDAK | The wrong page was retrieved for record handle <value>. |
XSDAL | Record handle <value> unexpectedly points
to overflow page. |
SQLSTATE | Texto da mensagem |
XSDB0 | Unexpected exception on in-memory page <page>. |
XSDB1 | Unknown page format at page <page>. |
XSDB2 | Unknown container format at container <containerName>
: <value>. |
XSDB3 | Container information cannot change once written: was <value>,
now <value>. |
XSDB4 | Page <page> is at version <value>
but the log file contains change version <value>. Either the log
records for this page are missing or this page was not written to disk properly. |
XSDB5 | Log has change record on page <page>, which
is beyond the end of the container. |
XSDB6 | Another instance of Derby may have already booted the
database <value>. |
XSDB7 | WARNING: Derby (instance <value>) is attempting
to boot the database <value> even though Derby (instance <value>)
might still be active. Only one instance of Derby should boot a database at
a time. Severe and non-recoverable corruption can result and might have already
occurred. |
XSDB8 | WARNING: Derby (instance <value>) is attempting
to boot the database <value> even though Derby (instance <value>)
might still be active. Only one instance of Derby should boot a database at
a time. Severe and non-recoverable corruption can result if two instances
of Derby boot on the same database at the same time. The db2j.database.forceDatabaseLock=true
property is set so the database will not boot until the db.lck is no longer
present. Normally this file is removed when the first instance of Derby to
boot on the database exits. However, it is not removed in some shutdowns.
If the file is not removed, you must remove it manually. It is important to
verify that no other VM is accessing the database before manually deleting
the db.lck file. |
XSDB9 | Stream container <containerName> is corrupt. |
XSDBA | Attempt to allocate object <object> failed. |
SQLSTATE | Texto da mensagem |
XSDF0 | Could not create file <fileName> as it already
exists. |
XSDF1 | Exception during creation of file <fileName>
for container. |
XSDF2 | Exception during creation of file <fileName>
for container, file could not be removed. The exception was: <value>. |
XSDF3 | Cannot create segment <segmentName>. |
XSDF4 | Exception during remove of file <fileName>
for dropped container, file could not be removed <value>. |
XSDF6 | Cannot find the allocation page <page>. |
XSDF7 | Newly created page failed to be latched <value>. |
XSDF8 | Cannot find page <page> to reuse. |
XSDFB | Operation not supported by a read only database. |
XSDFD | Different page image read on two I/Os on Page <page>.
The first image has an incorrect checksum, the second image has a correct
checksum. Page images follows: <value> <value>. |
XSDFF | The requested operation failed due to an unexpected
exception. |
SQLSTATE | Texto da mensagem |
XSDG0 | Page <page> could not be read from disk.
|
XSDG1 | Page <page> could not be written to disk,
please check if disk is full. |
XSDG2 | Invalid checksum on Page <page>, expected=<value>,
on-disk version=<value>, page dump follows: <value>. |
XSDG3 | Meta-data for Container <containerName> could
not be accessed. |
XSDG5 | Database is not in create mode when createFinished is
called. |
XSDG6 | Data segment directory not found in <value>
backup during restore. Please make sure that backup copy is the right one
and it is not corrupted. |
XSDG7 | Directory <directoryName> could not be removed
during restore. Please make sure that permissions are correct. |
XSDG8 | Unable to copy directory '<directoryName>'
to '<value>' during restore. Please make sure that there is enough
space and permissions are correct. |
SQLSTATE | Texto da mensagem |
XSLA0 | Cannot flush the log file to disk <value>.
|
XSLA1 | Log Record has been sent to the stream, but it cannot
be applied to the store (Object <object>). This may cause recovery
problems also. |
XSLA2 | An IOException occurred while accessing the log file.
The system will shut down. |
XSLA3 | The log file is corrupt. The log stream contains invalid
data. |
XSLA4 | Unable to write to the log, most likely because the
log is full. It is also possible that the file system is read-only, the disk
failed, or another problem occurred with the media. Delete unnecessary files. |
XSLA5 | Cannot read log stream for some reason to rollback transaction <value>. |
XSLA6 | Cannot recover the database. |
XSLA7 | Cannot redo operation <operation> in the log.
|
XSLA8 | Cannot rollback transaction <value>, trying
to compensate <value> operation with <value>. |
XSLAA | The store has been marked for shutdown by an earlier
exception. |
XSLAB | Cannot find log file <logfileName>. Verify
that the logDevice property is set with the correct path separator for your
platform. |
XSLAC | Database at <value> have incompatible format
with the current version of software, it may have been created by or upgraded
by a later version. |
XSLAD | Log record at instance <value> in log file <logfileName>
is corrupted. Expected log record length <value>, actual length <value>. |
XSLAE | Control file at <value> cannot be written
or updated. |
XSLAF | A read-only database was created with dirty data buffers. |
XSLAH | A read-only database is being updated. |
XSLAI | Cannot log the checkpoint log record. |
XSLAJ | The log record size <value> exceeds the maximum
allowable log file size <maxSize>. An error was encountered in log
file <fileName>, position <value>. |
XSLAK | Database has exceeded largest log file number <value>.
|
XSLAL | The log record size <value> exceeds the maximum
allowable log file size <maxSize>. An error was encountered in log
file <fileName>, position <value>. |
XSLAM | Cannot verify database format at <value> due
to IOException. |
XSLAN | Database at <value> has an incompatible format
with the current version of the software. The database was created by or upgraded
by version <version>. |
XSLAO | Recovery failed. Unexpected problem <value>. |
XSLAP | Database at <value> is at version <version>.
Beta databases cannot be upgraded. |
XSLAQ | Cannot create log file at directory <directory>. |
XSLAR | Unable to copy log file '<logfileName>' to
'<value>' during restore. Please make sure that there is enough
space and permissions are correct. |
XSLAS | Log directory <directory> not found in backup
during restore. Please make sure that backup copy is the correct one and it
is not corrupted. |
XSLAT | Log directory <directory> exists. Please make
sure specified logDevice location is correct. |
SQLSTATE | Texto da mensagem |
XSLB1 | Log operation <logoperation> encounters error
writing itself out to the log stream, this could be caused by an errant log
operation or internal log buffer full due to excessively large log operation. |
XSLB2 | Log operation <logoperation> logging excessive
data, it filled up the internal log buffer. |
XSLB4 | Cannot find truncationLWM <value>. |
XSLB5 | Illegal truncationLWM instance <value> for
truncation point <value>. Legal range is from <value>
to <value>. |
XSLB6 | Trying to log a 0 or -ve length log Record. |
XSLB8 | Trying to reset a scan to <value>, beyond
its limit of <value>. |
XSLB9 | Unable to issue any more changes. Log factory has been
stopped. |
SQLSTATE | Texto da mensagem |
XSRS0 | Cannot freeze the database after it is already frozen.
|
XSRS1 | Cannot backup the database to <value>, which
is not a directory. |
XSRS4 | Error renaming file (during backup) from <value>
to <value>. |
XSRS5 | Error copying file (during backup) from <path>
to <path>. |
XSRS6 | Cannot create backup directory <directoryName>.
|
XSRS7 | Backup caught unexpected exception. |
XSRS8 | Log device can only be set during database creation
time, it cannot be changed after the database is created. |
XSRS9 | Record <recordName> no longer exists. |
SQLSTATE | Texto da mensagem |
XSTA2 | A transaction was already active when an attempt was
made to activate another transaction. |
SQLSTATE | Texto da mensagem |
XSTB0 | An exception was thrown during transaction abort. |
XSTB2 | Unable to log transaction changes, possibly because
the database is read-only. |
XSTB3 | Cannot abort transaction because the log manager is
null, probably due to an earlier error. |
XSTB5 | Creating database with logging disabled encountered
unexpected problem. |
XSTB6 | Cannot substitute a transaction table with another while
one is already in use. |
SQLSTATE | Texto da mensagem |
XXXXX | Normal database session close. |
• | ||
• | ||
• | ||
• | ||
• | ||
• | ||
• | ||
• | ||
• | ||
• | ||
• | ||
• | ||
• |
• | ||
• | new org.apache.derby.jdbc.EmbeddedDriver() O mesmo que
Class.forName("org.apache.derby.jdbc.EmbeddedDriver"),
exceto por requerer que a classe seja encontrada quando o código é compilado. | |
• | Class c = org.apache.derby.jdbc.EmbeddedDriver.class Também é o mesmo que
Class.forName("org.apache.derby.jdbc.EmbeddedDriver"),
exceto por requerer que a classe seja encontrada quando o código é compilado.
O campo pseudo-estático class resulta na classe nomeada. | |
• | Definição da propriedade do sistema jdbc.drivers
Para definir uma propriedade do sistema, deve ser alterada a linha de comando
da chamada, ou as propriedades do sistema no aplicativo.
Não é possível alterar as propriedades do sistema em uma applet. |
jdbc:derby: [subsubprotocolo:][nomeBancoDados][;atributos]*
• | |||||||||||
• | O subsubprotocolo:
O subsubprotocolo, que normalmente não é especificado, especifica onde
o Derby procura pelo
banco de dados: em um diretório, em um caminho de classe, ou em um arquivo jar.
É usado raramente, geralmente em bancos de dado apenas-de-leitura.
O subsubprotocolo é um dos seguintes:
jar: requer um elemento adicional, imediatamente antes do
nomeBancoDados:
O caminhoArquivo é o caminho para o arquivo jar ou zip
que contém o banco de dados, e inclui o nome do arquivo
jar ou zip. Para obter exemplos de URLs de conexão com bancos de dados apenas-de-leitura
deve ser consultado o
Guia do Desenvolvedor do Derby. | ||||||||||
• | nomeBancoDados Deve ser especificado o nomeBancoDados para se conectar a um
banco de dados existente ou a um banco de dados novo. Pode ser especificado apenas o nome do banco de dados, ou junto com um
caminho absoluto ou relativo.
Consulte "Conexões padrão - Conectar a bancos de dados no sistema de arquivos",
no capítulo 1 do Guia do Desenvolvedor do Derby.
| ||||||||||
• | atributos São especificados zero ou mais atributos da URL de conexão com banco de dados,
conforme detalhado em Atributos da URL de conexão com o banco de dados Derby. |
jdbc:default:connection
import java.util.Properties; Connection conn = DriverManager.getConnection( "jdbc:derby:bancoAmostra;create=true"); -- definição de um atributo no objeto Properties Properties minhasPropriedades = new Properties(); minhasPropriedades.put("create", "true"); Connection conn = DriverManager.getConnection( "jdbc:derby:bancoAmostra", minhasPropriedades); -- passagem do nome do usuário e da senha Connection conn = DriverManager.getConnection( "jdbc:derby:bancoAmostra", "dba", "senha");
• | PROCEDURE_CAT sempre "NULL" no Derby | |
• | PROCEDURE_SCHEM esquema do procedimento Java | |
• | PROCEDURE_NAME nome do procedimento | |
• | COLUMN_NAME nome do parâmetro (consulte columnNamePattern) | |
• | COLUMN_TYPE indicação do que a linha descreve.
É sempre DatabaseMetaData.procedureColumnIn para parâmetros de método,
a menos que o parâmetro seja uma matriz.
Neste caso é DatabaseMetaData.procedureColumnInOut.
Retorna sempre DatabaseMetaData.procedureColumnReturn
para os valores retornados. | |
• | TYPE_NAME Nome específico do
Derby
para o tipo. | |
• | NULLABLE sempre retorna DatabaseMetaData.procedureNoNulls
para parâmetros primitivos, e DatabaseMetaData.procedureNullable
para parâmetros de objeto | |
• | REMARKS uma cadeia de caracteres descrevendo o tipo Java do parâmetro do método | |
• | METHOD_ID coluna específica do
Derby. | |
• | PARAMETER_ID coluna específica do
Derby. |
• | getColumnPrivileges | |
• | getTablePrivileges |
• | setBinaryStream para fluxos contendo bytes não interpretados | |
• | setAsciiStream para fluxos contendo caracteres ASCII | |
• |
setUnicodeStream para fluxos contendo caracteres Unicode |
Valores da coluna | Tipo correspondente | AsciiStream | UnicodeStream | BinaryStream |
CLOB | java.sql.Clob | x | x | ' |
CHAR | ' | x | x | ' |
VARCHAR | ' | x | x | ' |
LONGVARCHAR | ' | X | X | ' |
BINARY | ' | x | x | x |
BLOB | java.sql.Blob | x | x | x |
VARBINARY | ' | x | x | x |
LONGVARBINARY | ' | x | x | X |
Statement s = conn.createStatement(); s.executeUpdate("CREATE TABLE minha_tabela (a INT, b LONG VARCHAR)"); conn.commit(); java.io.File arquivo = new java.io.File("derby.txt"); int comprArquivo = (int) arquivo.length(); // primeiro, criar o fluxo de entrada java.io.InputStream fluxoEntrada = new java.io.FileInputStream(arquivo); PreparedStatement ps = conn.prepareStatement( "INSERT INTO minha_tabela VALUES (?, ?)"); ps.setInt(1, 1); // definir o valor do parâmetro de entrada como sendo o fluxo de entrada ps.setAsciiStream(2, fluxoEntrada, comprArquivo); ps.execute(); conn.commit();
CallableStatement cs = conn.prepareCall( "? = CALL getDriverType(cast (? as INT))" cs.registerOutParameter(1, Types.INTEGER); cs.setInt(2, 35); cs.executeUpdate();
CallableStatement call = conn.prepareCall( "{CALL dobreMeuInteiro(?)}"); // para os parâmetros INOUT, é boa prática registrar // o parâmetro de saída antes de definir o valor de entrada call.registerOutParameter(1, Types.INTEGER); call.setInt(1,10); call.execute(); int retval = call.getInt(1);
public static void dobreMeuInteiro(int[] i) { i[0] *=2; /* O Derby retorna o primeiro elemento da matriz. */ }
Tipo do JDBC | Tipo da matriz para o parâmetro do método | Valor e tipo retornado |
BIGINT | long[] | long |
BINARY | byte[][] | byte[] |
BIT | boolean[] | boolean |
DATE | java.sql.Date[] | java.sql.Date |
DOUBLE | double[] | double |
FLOAT | double[] | double |
INTEGER | int[] | int |
LONGVARBINARY | byte[][] | byte[] |
REAL | float[] | float |
SMALLINT | short[] | short |
TIME | java.sql.Time[] | java.sql.Time |
TIMESTAMP | java.sql.Timestamp[] | java.sql.Timestamp |
VARBINARY | byte[][] | byte[] |
OTHER | seuTipo[] | seuTipo |
JAVA_OBJECT (válido apenas nos ambientes Java2/JDBC 2.0) | seuTipo[] | seuTipo |
// trazer os dados como um fluxo ResultSet rs = s.executeQuery("SELECT b FROM minha_tabela"); while (rs.next()) { // utilizar java.io.InputStream para trazer os dados java.io.InputStream ip = rs.getAsciiStream(1); // processar o fluxo -- esta é apenas uma forma genérica// de se mostrar os dados int c; int tamanhoColuna = 0; byte[] buff = new byte[128]; for (;;) { int size = ip.read(buff); if (size == -1) break; tamanhoColuna += size; String chunk = new String(buff, 0, size); System.out.print(chunk); } } rs.close(); s.close(); conn.commit();
java.sql.Types | Tipos SQL |
BIGINT | BIGINT |
BINARY | CHAR FOR BIT DATA |
BIT1 | CHAR FOR BIT DATA |
BLOB | BLOB (JDBC 2.0 ou mais recente) |
CHAR | CHAR |
CLOB | CLOB (JDBC 2.0 ou mais recente) |
DATE | DATE |
DECIMAL | DECIMAL |
DOUBLE | DOUBLE PRECISION |
FLOAT
| DOUBLE PRECISION2 |
INTEGER | INTEGER |
LONGVARBINARY | LONG VARCHAR FOR BIT DATA |
LONGVARCHAR | LONG VARCHAR |
NULL | Não é um tipo de dado; é sempre um valor de um determinado tipo |
NUMERIC | DECIMAL |
REAL | REAL |
SMALLINT | SMALLINT |
TIME | TIME |
TIMESTAMP | TIMESTAMP |
VARBINARY | VARCHAR FOR BIT DATA |
VARCHAR | VARCHAR |
1.
|
BIT é válido somente no JDBC 2.0 e ambientes mais recentes. | |
2.
|
Os valores podem ser passados utilizando o código de tipo FLOAT;
entretanto, estes valores são armazenados como valores DOUBLE PRECISION,
e portanto sempre possuem o código de tipo DOUBLE quando trazidos. |
• | Funcionalidades do BLOB
O Derby suporta a interface
java.sql.Blob, e os métodos relacionados ao BLOB em
java.sql.PreparedStatement e
java.sql.ResultSet.
Os métodos getBlob de CallableStatement não estão implementados. | |
• | Funcionalidades do CLOB
O Derby
suporta a interface java.sql.Clob, e os métodos relacionados ao CLOB em
java.sql.PreparedStatement e
java.sql.ResultSet.
Os métodos getClob dos procedimentos de CallableStatement
não estão implementados. |
• | Utilizar o tipo BLOB do SQL para armazenamento;
Os tipos LONG VARCHAR FOR BIT DATA, BINARY e VARCHAR FOR BIT DATA
também funcionam. | |
• | Utilizar o tipo CLOB do SQL para armazenamento;
Os tipos LONG VARCHAR, CHAR e VARCHAR também funcionam. | |
• | Utilizar os métodos getBlob ou getClob da
interface java.sql.ResultSet, para obter um tratador de BLOB ou
CLOB para os dados subjacentes. | |
• | Não podem ser chamados métodos estáticos (Extensão SQL sobre SQL)
em qualquer coluna LOB. |
• | Os tipos-LOB não podem ser comparados com relação a igualdade (=)
e desigualdade (!=, <>). | |
• | Os valores dos tipos-LOB não são ordenáveis, portanto não são suportados os
testes <, <=, >, >=. | |
• | Os tipos-LOB não podem ser utilizados em índices, ou como colunas de
chave primária. | |
• | Também são proibidas as cláusulas DISTINCT, GROUP BY e ORDER BY
nos tipos-LOB. | |
• | Os tipos-LOB não podem estar envolvidos em conversões implícitas como
outros tipos base. |
Retorna | Assinatura | Notas de implementação |
InputStream | getBinaryStream() | ' |
byte[] | getBytes(long pos, int length) | São lançadas exceções se pos < 1,
se pos for maior que o comprimento, ou se length <= 0. |
long | length() | ' |
long | position(byte[] pattern, long start) | São lançadas exceções se pattern == null,
se start < 1, ou se pattern for uma matriz de comprimento 0.
|
long | position(Blob pattern, long start) | São lançadas exceções se pattern == null,
se start < 1, se pattern possuir comprimento 0,
ou se for lançada uma exceção ao tentar ler o primeiro byte de pattern.
|
Retorna | Assinatura | Notas de implementação |
InputStream | getAsciiStream() | ' |
Reader | getCharacterStream() | NÃO SUPORTADO |
String | getSubString(long pos, int length) | São lançadas exceções se pos < 1,
se pos for maior que o comprimento de Clob, ou se
length <= 0.
|
long | length() | ' |
long | position(Clob searchstr, long start) | São lançadas exceções se searchStr == null, se
start < 1, se searchStr possuir comprimento 0,
ou se for lançada uma exceção ao tentar ler o primeiro caractere de
searchStr. |
long | position(String searchstr, long start) | São lançadas exceções se searchStr == null,
se start < 1, ou se o padrão for uma cadeia vazia. |
• | getBlob | |
• | getClob | |
• | getAsciiStream | |
• | getBinaryStream | |
• | getUnicodeStream |
ResultSet rs = s.executeQuery("SELECT text FROM CLOBS WHERE i = 1"); while (rs.next()) { aclob=rs.getClob(1); ip = rs.getAsciiStream(1); }
Retorna | Assinatura |
Statement | createStatement( int resultSetType, int resultSetConcurrency) |
PreparedStatement | prepareStatement(String sql, int resultSetType, int
resultSetConcurrency) |
CallableStatement | prepareCall(String sql, int resultSetType, int resultSetConcurrency |
Retorna | Assinatura | Notas da implementação |
void | afterLast() | ' |
void | beforeFirst() | ' |
void | beforeFirst() | ' |
void | deleteRow() | Após a linha ser atualizada, o objeto ResultSet será
posicionado antes da próxima linha.
Antes de executar qualquer método diferente de close no objeto
ResultSet, o programa precisará reposicionar o objeto ResultSet
utilizando o método next(). |
boolean | first() | ' |
Blob | getBlob(int columnIndex) | Consulte java.sql.Blob e java.sql.Clob |
Blob | getBlob(String columnName) | |
Clob | getClob(int columnIndex) | |
Clob | getClob(String columnName) | |
int | getConcurrency() | Se o objeto Statement possuir a simultaneidade
CONCUR_READ_ONLY, então este método retornará
ResultSet.CONCUR_READ_ONLY.
Mas se o objeto Statement possuir a simultaneidade
CONCUR_UPDATABLE, então o valor retornado dependerá do ResultSet
da linguagem subjacente ser atualizável ou não.
Se o ResultSet da linguagem for atualizável, então
getConcurrency() retornará ResultSet.CONCUR_UPDATABLE.
Se o ResultSet da linguagem não for atualizável, então
getConcurrency() retornará ResultSet.CONCUR_READ_ONLY. |
int | getFetchDirection() | ' |
int | getFetchSize() | Sempre retorna 1. |
int | getRow() | ' |
boolean | isAfterLast() | ' |
boolean | isBeforeFirst | ' |
boolean | isFirst() | ' |
boolean | isLast() | ' |
boolean | last() | ' |
boolean | previous() | ' |
boolean | relative(int rows) | ' |
void | setFetchDirection(int direction) | ' |
void | setFetchSize(int rows) | O tamanho de busca igual a 1 é o único tamanho suportado. |
void | updateRow() | Após a linha ser atualizada, o objeto ResultSet será
posicionado antes da próxima linha.
Antes de executar qualquer método diferente de close no objeto
ResultSet, o programa precisará reposicionar o objeto ResultSet
utilizando o método next(). |
Retorna | Assinatura | Notas da implementação |
void | addBatch(String sql) | ' |
void | clearBatch() | ' |
int[] | executeBatch() | ' |
int | getFetchDirection() | Chamar este método não lança uma exceção, mas a chamada é ignorada. |
int | getFetchSize() | Chamar este método não lança uma exceção, mas a chamada é ignorada. |
int | getMaxFieldSize() | ' |
void | getMaxRows() | ' |
void | setEscapeProcessing(boolean enable) | ' |
void | setFetchDirection(int direction) | Chamar este método não lança uma exceção, mas a chamada é ignorada. |
void | setFetchSize(int rows) | Chamar este método não lança uma exceção, mas a chamada é ignorada. |
void | setMaxFieldSize(int max) | Sem efeito em Blobs e Clobs. |
void | setMaxRows() | ' |
Retorna | Assinatura | Notas da implementação |
void | addBatch() | ' |
ResultSetMetaData | getMetaData() | ' |
void | setBlob(int i, Blob x) | ' |
void | setClob(int i, Clob x) | ' |
Retorna | Assinatura | Notas da implementação |
BigDecimal | getBigDecimal | ' |
Date | getDate(int, Calendar) | ' |
Time | getTime(int,Calendar) | ' |
Timestamp | getTimestamp(int, Calendar) | ' |
• | Os aplicativos devem obter e definir valores DECIMAL
utilizando métodos getXXX e setXXX
alternativos do JDBC, como getString() e
setString().
Qualquer método alternativo que funcione com o tipo DECIMAL no JDBC 2.0 ou 3.0
irá funcionar no JSR169. | |
• | As funções e procedimentos Java que utilizam parâmetros do JDBC do lado
servidor, como CONTAINS SQL, READS SQL DATA
e MODIFIES SQL DATA, não são suportadas no JSR169. | |
• | A API padrão utilizada para obter a conexão
(jdbc:default:connection) não é suportada no JSR169.
Ocorre um erro em tempo de execução quando a rotina tenta obter a conexão
utilizando jdbc:default:connection. | |
• | Não são suportadas tabelas de diagnóstico. | |
• | Não são suportados gatilhos. | |
• | Não são suportados bancos de dados criptografados. | |
• | Não é suportado DriverManager.
Não pode ser utilizado DriverManager.getConnection() para obter a
conexão. |
• | Novos métodos DatabaseMetaData.
Consulte java.sql.DatabaseMetaData. | |
• | Acesso a metadados de parâmetro.
Consulte java.sql.ParameterMetaData
e java.sql.PreparedStatement. | |
• | Acesso a chaves auto-geradas.
Consulte java.sql.Statement e
java.sql.DatabaseMetaData. | |
• | Pontos de salvamento.
Consulte java.sql.Connection. | |
• | Cursores HOLD.
Consulte java.sql.DatabaseMetaData. |
Retorna | Assinatura | Notas da implementação |
Savepoint | setSavepoint (String name) | Cria um ponto de salvamento na transação corrente com o nome
fornecido, e retorna o novo objeto Savepoint que representa o mesmo. |
Savepoint | setSavepoint () | Cria um ponto de salvamento sem nome na transação corrente,
e retorna o novo objeto Savepoint que representa o mesmo. |
void | releaseSavepoint (Savepoint savepoint) | Remove da transação corrente o objeto Savepoint especificado. |
void | rollback(Savepoint savepoint) | Desfaz todas as alterações realizadas após o objeto Savepoint
especificado ter sido definido. |
Retorna | Assinatura | Notas da implementação |
boolean | supportsSavepoints() | ' |
int | getDatabaseMajorVersion() | ' |
int | getDatabaseMinorVersion() | ' |
int | getJDBCMajorVersion() | ' |
int | getJDBCMinorVersion() | ' |
int | getSQLStateType() | ' |
boolean | supportsNamedParameters() | ' |
boolean | supportsMultipleOpenResults() | ' |
boolean | supportsGetGeneratedKeys() | ' |
boolean | supportsResultSetHoldability(int holdability) | ' |
int | getResultSetHoldability() | retorna ResultSet.HOLD_CURSORS_OVER_COMMIT |
Retorna | Assinatura | Notas da implementação |
int | getParameterCount() | ' |
int | isNullable(int param) | ' |
boolean | isSigned(int param) | ' |
int | getPrecision(int param) | ' |
int | getScale(int param) | ' |
int | getParameterType(int param) | ' |
String | getParamterTypeName (int param) | ' |
String | getParamterClassName (int param) | ' |
int | getParameterMode (int param) | ' |
Retorna | Assinatura | Notas da implementação |
ParameterMetaData | getParameterMetaData() | ' |
// A auto-efetivação deve estar desativada // para utilizar pontos de salvamento. conn.setAutoCommit(false); Statement stmt = conn.createStatement(); int rows = stmt.executeUpdate("INSERT INTO TABELA1 (COL1) VALUES(1)"); // definir o ponto de salvamento Savepoint svpt1 = conn.setSavepoint("S1"); rows = stmt.executeUpdate("INSERT INTO TABELA1 (COL1) VALUES (2)"); ... conn.rollback(svpt1); ... conn.commit();
Retorna | Assinatura | Notas da implementação |
int | getSavepointId() | Lança uma SQLException se for um ponto de salvamento
com nome.
Obtém o ID gerado para o ponto de salvamento que este objeto Savepoint representa. |
String | getSavepointName() | Lança uma SQLException se for um ponto de salvamento
sem nome.
Obtém o nome do ponto de salvamento que este objeto Savepoint representa. |
Retorna | Assinatura | Notas da implementação |
ResultSet | getGeneratedKeys() | ' |
Statement stmt = conn.createStatement(); int rows = stmt.executeUpdate("INSERT INTO TABELA1 (C11, C12) VALUES (1,1)", Statement.RETURN_GENERATED_KEYS); ResultSet rs = stmt.getGeneratedKeys();
• | Palavra chave de escape do JDBC para instruções call A palavra chave de escape para uso em CallableStatement. | |
• | Sintaxe de escape do JDBC A palavra chave de escape para os formatos de data. | |
• | Sintaxe de escape do JDBC para cláusulas LIKE A palavra chave para especificar caracteres de escape para as cláusulas LIKE. | |
• | Sintaxe de escape do JDBC para a palavra chave fn A palavra chave de escape para as funções escalares. | |
• | Sintaxe de escape do JDBC para junções externas A palavra chave de escape para as junções externas. | |
• | Sintaxe de escape do JDBC para formatos de hora A palavra chave de escape para formatos de hora. | |
• | Sintaxe de escape do JDBC para formatos de carimbo do tempo A palavra chave de escape para formatos de carimbo do tempo. |
WHERE ExpressãoCaractere [ NOT ] LIKE ExpressãoCaractereComCaractereCuringa { ESCAPE 'CaractereDeEscape' }
-- descobrir todas as linhas que começam pelo caractere "%" SELECT a FROM tabA WHERE a LIKE '$%%' {escape '$'} -- descobrir todas as linhas que terminam pelo caractere "_" SELECT a FROM tabA WHERE a LIKE '%=_' {escape '='}
{fn chamadaFunção}
concat (ExpressãoCaractere, ExpressãoCaractere)
sqrt (ExpressãoPontoFlutuante)
abs (ExpressãoNumérica)
locate(ExpressãoCaractere, ExpressãoCaractere [, posiçãoInício] )
substring(ExpressãoCaractere, posiçãoInício, comprimento)
mod(tipo_inteiro, tipo_inteiro)
TIMESTAMPADD( intervalo, expressãoInteira, expressãoCarimboTempo )
TIMESTAMPDIFF( intervalo, expressãoCarimboTempo1, expressãoCarimboTempo2 )
• | SQL_TSI_DAY | |
• | SQL_TSI_FRAC_SECOND | |
• | SQL_TSI_HOUR | |
• | SQL_TSI_MINUTE | |
• | SQL_TSI_MONTH | |
• | SQL_TSI_QUARTER | |
• | SQL_TSI_SECOND | |
• | SQL_TSI_WEEK | |
• | SQL_TSI_YEAR |
{fn TIMESTAMPADD( SQL_TSI_MONTH, 1, CURRENT_TIMESTAMP)}
{fn TIMESTAMPDIFF(SQL_TSI_WEEK, CURRENT_TIMESTAMP, timestamp('2001-01-01-12.00.00.000000'))}
-- junção externa SELECT * FROM {oj PAÍSES LEFT OUTER JOIN CIDADES ON (PAÍSES.COD_ISO_PAÍS=CIDADES.COD_ISO_PAÍS)} -- outra operação de junção SELECT * FROM {oj PAÍSES JOIN CIDADES ON (PAÍSES.COD_ISO_PAÍS=CIDADES.COD_ISO_PAÍS)} -- a ExpressãoTabela pode ser a OperaçãoJunção. -- Portanto podem haver várias operações de -- junção na cláusula FROM SELECT E.NUM_EMP, E.ÚLTIMO_NOME, M.NUM_EMP, M.ÚLTIMO_NOME FROM {oj EMPREGADOS E INNER JOIN DEPARTAMENTOS INNER JOIN EMPREGADOS M ON NUM_GER = M.NUM_EMP ON E.DEP_TRAB = NUM_DEP};
-- inicialização de um banco de dados criptografado jdbc:derby:bancoCriptografado;bootPassword=cseveryPlace -- criação de um banco de dados criptografado jdbc:derby:bancoNovo;create=true;dataEncryption=true; bootPassword=cseveryPlace
• | jdbc:derby:bancoTurismo | |
• | jdbc:derby:;databaseName=bancoTurismo | |
• | jdbc:derby:(com a propriedade databaseName e seu valor
bancoTurismo definida no objeto Properties passado na requisição
de conexão) |
jdbc:derby:bancoTurismo;databaseName=bancoVoos
algoritmo/modo/preenchimento
Código do idioma | Descrição |
de | Alemão |
en | Inglês |
es | Espanhol |
ja | Japonês |
pt | Português |
Código do país | Descrição |
BR | Brasil |
DE | Alemanha |
US | Estados Unidos |
ES | Espanha |
MX | México |
JP | Japão |
• | Suporte JNDI.
Permite aos aplicativos que fazem a chamada registrar nomes para os
bancos de dados, e acessá-los através destes nomes em vez de através de
URL de conexão com o banco de dados.
A implementação de uma das extensões do JDBC,
javax.sql.DataSource,
fornece este suporte. | |
• | Pool de conexões.
Mecanismo pelo qual um servidor de pool de conexões mantém
um conjunto de conexões abertas para o gerenciador de recursos
(Derby).
Um usuário requisitando uma conexão pode obtê-la entre as conexões disponíveis
no pool.
Este pool de conexões é útil em ambientes cliente/servidor, porque o
estabelecimento de uma conexão é relativamente dispendioso.
Em um ambiente incorporado as conexões são muito menos dispendiosas, tornando
a melhoria de desempenho do pool de conexões insignificante.
A implementação de duas extensões do JDBC,
javax.sql.ConnectionPoolDataSource
e javax.sql.PooledConnection, fornecem este suporte. | |
• | Suporte ao XA.
O XA é um dos diversos padrões para gerenciamento de transações distribuídas.
É baseado na efetivação de duas fases (two-phase commit).
As interfaces javax.sql.XAxxx, junto com o pacote
java.transaction.xa, são uma implementação abstrata do XA.
Para obter mais informações sobre o XA deve ser consultado
X/Open CAE Specification-Distributed Transaction Processing: The XA Specification,
X/Open Document No. XO/CAE/91/300 ou ISBN 1 872630 24 3.
A implementação da API do JTA, as interfaces do pacote
java.transaction.xa
(javax.sql.XAConnection,javax.sql.XADataSource,javax.transaction.xa.XAResource,javax.transaction.xa.Xid, e
javax.transaction.xa.XAException),
fornecem este suporte. |
• | Ambiente Java 2 Platform, Standard Edition v 1.2 (J2SE),
ou superior | |
• | Bibliotecas javax.sql Os binários de extensão do padrão JDBC 2.0 estão disponíveis na página
http://java.sun.com/products/jdbc/download.html.
Estas bibliotecas fazem parte do ambiente padrão da
Java 2 Platform, Standard Edition v 1.4, ou mais recente. | |
• | Bibliotecas javax.transaction.xa Estas bibliotecas fazem parte do ambiente padrão da
Java 2 Platform, Standard Edition v 1.4, ou mais recente. Para as bibliotecas do JTA deve ser aberta a página
http://java.sun.com/products/jta/,
e baixada a especificação e os arquivos de ajuda javadoc
para as interfaces do JTA. | |
• | O Derby (derby.jar) |
• | setCreateDatabase(String create) Define a propriedade para criar o banco de dados na próxima conexão.
O argumento cadeia de caracteres deve ser "create". | |
• | setShutdownDatabase(String shutdown) Define a propriedade para parar o banco de dados.
Pára o banco de dados na próxima conexão.
O argumento cadeia de caracteres deve ser "shutdown". |
• | org.apache.derby.tools.ij Uma ferramenta de script SQL que pode ser executada como um aplicativo
incorporado ou cliente/servidor.
Consulte o Guia das Ferramentas e Utilitários do Derby. | |
• | org.apache.derby.tools.sysinfo Um utilitário de linha de comando, do lado servidor, que mostra informações
sobre a JVM e o produto Derby.
Consulte o Guia das Ferramentas e Utilitários do Derby. | |
• | org.apache.derby.tools.dblook Um utilitário para ver todas as partes da Linguagem de Definição de Dados
(DDL) para um determinado banco de dados.
Consulte o Guia das Ferramentas e Utilitários do Derby. |
• | org.apache.derby.jdbc.EmbeddedDriver Utilizado para inicializar um driver de JDBC nativo incorporado e o
sistema Derby. | |
• | org.apache.derby.jdbc.ClientDriver Utilizado para conectar ao Network Server do
Derby
no modo cliente-servidor. |
• | org.apache.derby.jdbc.EmbeddedDataSource | |
• | org.apache.derby.jdbc.EmbeddedConnectionPoolDataSource | |
• | org.apache.derby.jdbc.EmbeddedXADataSource |
• | org.apache.derby.jdbc.ClientDataSource | |
• | org.apache.derby.jdbc.ClientConnectionPoolDataSource | |
• | org.apache.derby.jdbc.ClientXADataSource |
• | org.apache.derby.authentication.UserAuthenticator | |
• | Uma interface fornecida pelo
Derby.
As classes que fornecem esquema de autenticação de usuário alternativa
devem implementar esta interface.
Para obter informações sobre usuários deve ser consultado
"Trabalhando com autenticação de usuário", no capítulo 7 do
Guia do Desenvolvedor do Derby.
|
Identificador | Número máximo de caracteres permitido |
nome de restrição | 128 |
nome de correlação | 128 |
nome de cursor | 128 |
nome de coluna de fonte de dados | 128 |
nome de índice de fonte de dados | 128 |
nome de fonte de dados | 128 |
nome de ponto de salvamento | 128 |
nome de esquema | 128 |
nome de coluna não qualificado | 128 |
nome de função não qualificado | 128 |
nome de índice não qualificado | 128 |
nome de procedimento não qualificado | 128 |
nome de parâmetro | 128 |
nome de gatilho não qualificado | 128 |
nome de tabela, nome de visão, nome de procedimento
armazenado não qualificados | 128 |
Valor | Limite |
Menor INTEGER | -2.147.483.648 |
Maior INTEGER | 2.147.483.647 |
Menor BIGINT | -9.223.372.036.854.775.808 |
Maior BIGINT | 9.223.372.036.854.775.807 |
Menor SMALLINT | -32.768 |
Maior SMALLINT | 32.767 |
Maior precisão decimal | 31.255 |
Menor DOUBLE | -1.79769E+308 |
Maior DOUBLE | 1.79769E+308 |
Menor DOUBLE positivo | 2.225E-307 |
Maior DOUBLE negativo | -2.225E-307 |
Menor REAL | -3.402E+38 |
Maior REAL | 3.402E+38 |
Menor REAL positivo | 1.175E-37 |
Maior REAL negativo | -1.175E-37 |
Valor | Limite máximo |
Comprimento de CHAR | 254 caracteres |
Comprimento de VARCHAR | 32.672 caracteres |
Comprimento de LONG VARCHAR | 32.700 caracteres |
Comprimento de CLOB | 2.147.483.647 caracteres |
Comprimento de BLOB | 2.147.483.647 caracteres |
Comprimento de constante caractere | 32.672 |
Comprimento de cadeia de caracteres concatenada | 2.147.483.647 |
Comprimento de cadeia binária concatenada | 2.147.483.647 |
Número de dígitos da constante hexadecimal | 16.336 |
Comprimento da constante com valor DOUBLE | 30 caracteres |
Valor | Limite |
Menor valor DATE | 0001-01-01 |
Maior valor DATE | 9999-12-31 |
Menor valor TIME | 00:00:00 |
Maior valor TIME | 24:00:00 |
Menor valor TIMESTAMP | 0001-01-01-00.00.00.000000 |
Maior valor TIMESTAMP | 9999-12-31-24.00.00.000000 |
Valor | Limite |
Número máximo de colunas em uma tabela | 1.012 |
Número máximo de colunas em uma visão | 5.000 |
Número máximo de parâmetros em um procedimento armazenado | 90 |
Número máximo de índices em uma tabela | 32.767 ou a capacidade de armazenamento |
Número máximo de tabelas referenciadas em uma
instrução SQL ou em uma visão | capacidade de armazenamento |
Número máximo de elementos na lista de seleção | 1.012 |
Número máximo de predicados na cláusula WHERE e HAVING | capacidade de armazenamento |
Número máximo de colunas na cláusula GROUP BY | 32.677 |
Número máximo de colunas na cláusula ORDER BY | 1.012 |
Número máximo de instruções preparadas | capacidade de armazenamento |
Número máximo de de cursores declarados em um programa | capacidade de armazenamento |
Número máximo de cursores abertos ao mesmo tempo | capacidade de armazenamento |
Número máximo de restrições na tabela | capacidade de armazenamento |
Nível máximo de aninhamento da subconsulta | capacidade de armazenamento |
Número máximo de subconsultas em uma única instrução | capacidade de armazenamento |
Número máximo de linhas alteradas em uma unidade de trabalho | capacidade de armazenamento |
Número máximo de constantes em uma instrução | capacidade de armazenamento |
Profundidade máxima de gatilhos em cascata | 16 |