sql

Como manipular dados do tipo collection / conjunto ( set , list, multiset ).

Há muitas maneiras de tratar dados do tipo collection e também há muitas maneiras dinâmicas de tratar dados convertendo eles para collection.

Abaixo será demonstrado como tratar estes dados em SELECTs e como altera-los:

Tipo collection / conjunto , diferenças entre SET , LIST e MULTISET

Um campo do tipo collection é um conjunto, onde é possível ter mais
de um dado no mesmo campo/registro.

Utilizar uma stored procedure em um select no lugar de uma tabela

Primeiro é necessário fazer com que a procedure retorne mais de uma linha na execução, para isso basta incluir o comando RETURN dentro de um FOREACH com o parametro WITH RESUME:

CREATE PROCEDURE xyz() RETURNING int
...
FOREACH c1 FOR ...
RETURN v_campo WITH RESUME;
END FOREACH
END PROCEDURE

Então basta utiliza-la no select da seguinte forma:
[code]
SELECT * FROM TABLE(xyz());
[/cod

Tags:

Qual informação de estatística é criada durante a criação de um indice?

Obs.: Este recurso está disponível apenas a partir da versão 11.10.

  • Coleta estatísticas de indice equivalente a um UPDATE STATISTICS LOW, que se refere a dados como o segundo maior

Quais as verificaçoes a fazer no SQLCA ?

SQLCA = SQL Control Area

ESTRUTURA DO SQLCA
  SQLCA         : struct
  SQLCA.SQLCODE : integer

Tags:

Como validar as alterações de dados (constraints) apenas no final da transação?

Basta utililizar SET CONSTRAINTS [ALL|cons] DEFERRED
Exemplo:
[code]
create table tp01 ( cod integer, cod2 char(1) );
alter table tp01 add constraint unique (cod) constraint ucons;
insert into tp01 values (1,"a");
insert into tp01 values (2,"b");
insert into tp01 values (3,"c");
insert into tp01 values (4,"d");
set constraints all deferred;
begin work;
update tp01 set cod = 4 where cod2 = "b" ;
up

Tags:

Quais cuidados tomar para criação de indices utilizando parametro ONLINE?

  • O banco precisa de lock exclusivo apenas no momento de "commitar" a criação de indice, portanto definir o SET LOCK MODE TO WAIT
Tags:

Existe uma tabela "dummy" igual a tabela DUAL do Oracle?

Apartir da versão 11.10 foi criada a tabela sysmaster:sysdual que pode ser utilizada para executar SP e funcoes como:

Tags:

Como capturar SQLs ( DML /DDL ).

É possível capturar todos os SELECTs/DELETEs/UPDATEs/INSERTs além dos outros comandos como CREATE/DROP e etc.
Para isso deve-se utilizar o recurso de SQL TRACE do Informix.

Utilizando selects hierárquicos. Relação pai-filho na mesma tabela.

Selects hierárquicos são utilizados para tabelas que possuem relacionamento de pai-filho com ela mesma.
Com elas é possível reescrever um SELECT de modo muito simples, fácil entendimento e ótima performance. São muito uteis em relacionamento de hierarquia de setores, empregados, produtos, contabilidade e etc.

Tags: