Nosso dia-a-dia tecnológico ! Curta nossa página no facebook !

Slider[Style1]

Firebird SQL 27 - Stored Procedures

►► Clique em curtir e ajude a divulgar o meu trabalho ! ◄◄
Stored Procedure é uma coleção de comandos em SQL para otimização de Banco de dados. Encapsular tarefas repetitivas, aceita parâmetros de entrada e retorna um valor de status.

►► Confira os exemplos abaixo: ◄◄
Neste vídeo vamos criar os seguintes procedimentos:

Exemplo 1 - Somar dois valores:
 SET TERM ^ ;

CREATE PROCEDURE SomaValor
 ( nValor1 integer, nValor2 integer )
RETURNS
 ( nTOTAL integer )
AS

BEGIN
  /* write your code here */
  nTOTAL = nValor1 + nValor2;
END^

SET TERM ; ^


Exemplo 2 - Atualizar preço de produto com calculo percentual:
SET TERM ^ ;

CREATE PROCEDURE stAtualizaValor
 ( nCodigo, nPercentual )
AS
BEGIN
  /* write your code here */
  update PRODUTO
  set PRODUTO.PRO_VALOR = PRODUTO.PRO_VALOR + ((PRODUTO.PRO_VALOR * :nPERCENTUAL)/100)
  Where PRODUTO.PRO_CODIGO = :nCODIGO;
 
END^

SET TERM ; ^


Exemplo 3 - Incluir, Alterar ou Excluir registros:
 SET TERM ^ ;
ALTER PROCEDURE EDTPRODUTO (
    CTIPO varchar(1),
    NCODIGO integer,
    CDESCRICAO varchar(20),
    NVALOR numeric(6,2),
    NGRUPO integer )
AS
BEGIN
  /* write your code here */
  if (cTipo = 'I') then
     insert into PRODUTO
            (PRODUTO.PRO_CODIGO,PRODUTO.PRO_NOME, PRODUTO.PRO_VALOR, PRODUTO.PRO_GRUPO)
     values (:nCODIGO, :cDESCRICAO, :nVALOR, :nGRUPO);
  else
     if (cTIPO = 'A') then
        update PRODUTO
           set PRODUTO.PRO_NOME = :cDESCRICAO,
               PRODUTO.PRO_GRUPO= :nGRUPO,
               PRODUTO.PRO_VALOR= :nVALOR
         where PRODUTO.PRO_CODIGO = :nCODIGO;
     else
        if (cTIPO = 'E')  then
            delete from PRODUTO
            where PRODUTO.PRO_CODIGO = :nCODIGO;
  suspend;          
                     
     
END^
SET TERM ; ^




Curso Firebird 26 - AVG

A função AVG retorna o cálculo médio de valores.

Exemplo:
select i.IPED_PRODUTO as Codigo, p.PRO_NOME as Descricao,
sum(i.IPED_QTDE) as Quantidade,avg( i.IPED_UNITARIO) as Un_Medio,
( sum(i.IPED_QTDE) * avg(i.IPED_UNITARIO)) as Total
from Produto P, ITEMPEDIDO I
where p.PRO_CODIGO = i.IPED_PRODUTO
group by i.IPED_PRODUTO, p.PRO_NOME

Firebird SQL 25 - Sum e Group By


Vou mostrar como somar registros  como produtos vendidos, agrupando campos com a cláusula GROUP BY.



select i.IPED_PRODUTO as Codigo, p.PRO_NOME as Descricao,
sum(i.IPED_QTDE) as Quantidade, i.IPED_UNITARIO as Unitario,
sum(i.IPED_QTDE * i.IPED_UNITARIO) as Total
from Produto P, ITEMPEDIDO I
where p.PRO_CODIGO = i.IPED_PRODUTO
group by i.IPED_PRODUTO, p.PRO_NOME, i.IPED_UNITARIO


Curso Firebird SQL 24 - Extract

► Ajude a manter este canal no ar, clique em GOSTEI !◄

Neste vídeo vou mostrar como selecionar registros extraindo dias, meses ou anos. exemplo todos clientes nascidos em agosto .. ou todos nascidos em determinado dia e mês...





-- nascidos no mês 08 de qualquer ano ou dia
select *
from cliente
where EXTRACT (Month FROM CLI_DTNAS) = 8;

-- nascidos entre o mes 4 e 8
select *
from cliente
where EXTRACT (Month FROM CLI_DTNAS) between 4 and 8;

-- nascidos no dia 03 do mês 08 de qualquer ano
select *
from cliente
where EXTRACT (Month FROM CLI_DTNAS) = 8
  and EXTRACT (DAY FROM CLI_DTNAS) = 3;


--Exibir nome do cliente e realizar calculo de idade
select CLI_NOME as NOME,
(EXTRACT (Year FROM CURRENT_DATE) - EXTRACT (Year FROM CLI_dtnas)) as Idade
from CLIENTE


Conectando PostGreSQL no Delphi Berlin usando ZEOS

Neste vídeo vou mostrar como conectar a uma base de dados PostGreSQL no Delphi Berlin usando o ZeosLib e resolver o problema:

None of the dynamic libraries Can Be found or is not loadable: libpq.dll!
Use TZConnection.libraryLocation if the location is invalid.

Curso Firebird SQL 23 - Union

O operador UNION é usado para combinar o conjunto de resultados de duas ou mais instruções SELECT.

Observe que cada instrução SELECT no UNION deve ter o mesmo número de colunas. As colunas também devem ter tipos de dados semelhantes. Além disso, as colunas em cada instrução SELECT devem estar na mesma ordem.
Script exemplo:
SELECT codigo, tipo, nome 
from (select
        F.FOR_CODIGO AS codigo,     
        'Fornecedor' as Tipo, 
        f.FOR_NOME   as Nome
      from FORNECEDOR F
    
 UNION ALL

      select
         c.CLI_CODIGO as codigo, 
         'Cliente'    as Tipo,
         c.CLI_NOME as Nome
      from CLIENTE C)
  
 Order BY NOME
 


Curso Firebird SQL 22 - Alias

Aliases SQL são usados ​​para fornecer a uma tabela de banco de dados ou a uma coluna em uma tabela, um nome temporário.
Basicamente aliases são criados para tornar os nomes das colunas mais legíveis.

Curso Firebird SQL 21 - Right Join

O comando Right join (junta-se a direita) retorna os todos registros
da tabela a direita independente do vínculo da tabela a esquerda.

Script de exemplo:

SELECT *
from produto
right join GRUPO on GRUPO.GRU_CODIGO = PRODUTO.PRO_GRUPO


SELECT *
from CLIENTE
RIGHT join CIDADE on CIDADE.CID_CODIGO = CLIENTE.CLI_CIDADE

Curso Firebird SQL 20 - Left Join

O comando Left join (junta-se a esquerda) retorna os todos registros
da tabela a esquerda independente do vínculo da tabela a direita.

Script exemplo:

SELECT *
from CLIENTE
left join CIDADE on CIDADE.CID_CODIGO = CLIENTE.CLI_CIDADE


SELECT *
from produto
left join GRUPO on GRUPO.GRU_CODIGO = PRODUTO.PRO_GRUPO



Curso Firebird SQL 19 - Join

O comando inner join ou join (junta-se) retorna os registros Iguais
(comuns) entre as duas tabelas.

Script Exemplo:



SELECT *
from produto
inner join GRUPO on GRUPO.GRU_CODIGO = PRODUTO.PRO_GRUPO


SELECT *
from CLIENTE
join CIDADE on CIDADE.CID_CODIGO = CLIENTE.CLI_CIDADE


Curso Firebird SQL 18 - Exception

Tratando exceções com mensagens de retorno.




Script exemplo:

--Criando Exception
CREATE EXCEPTION EXC_CLIPADRAO
'Cliente 1 padrão consumidor, exclusão não permitida';


--Criando Gatilho para disparar exception
SET TERM ^ ;
CREATE TRIGGER CLIENTE_BD FOR CLIENTE ACTIVE
BEFORE DELETE POSITION 0
AS
BEGIN
    /* enter trigger code here */
   if (old.Cli_CODIGO = 1) then
    exception EXC_CLIPADRAO;   
END^
SET TERM ; ^

Curso Firebird SQL 17 - Generator e Trigger

Criando campo auto incrimento usando trigger e generator.



Script Exemplo:

--Criar Generator:
CREATE GENERATOR INC_PRODUTO;
SET GENERATOR INC_PRODUTO TO 1;


--Criar Gatilho(trigger)
 SET TERM ^ ;
CREATE TRIGGER PRODUTO_BI FOR PRODUTO ACTIVE
BEFORE INSERT POSITION 0
AS
BEGIN
    /* enter trigger code here */
    new.PRO_CODIGO = GEN_ID(INC_PRODUTO,1);
END^
SET TERM ;
^


Curso Firebird SQL 16 - Between

O operador BETWEEN seleciona valores dentro de um intervalo. Os valores podem ser números, texto ou datas.


Script exemplo:

-- valor do produto maior ou igual a 5 e menor ou igual a 13
select * from produto where (pro_valor >= 5 and pro_valor <= 13)
ou
select * from produto where (pro_valor between 5 and 13);
--BETWEEN exibe registros entre 2 valores ou datas

Curso Firebird SQL 15 - In

O operador IN permite que você especifique vários valores em uma cláusula WHERE.





Script exemplo:

-- somente do produto com código = 3
select * from produto where pro_codigo = 3;
--ou
select * from produto where pro_codigo in(3); // in

-- somente produtos com código = 3 e codigo = 5
select * from produto where (pro_codigo = 3 or pro_codigo = 6);
ou
select * from produto where pro_codigo in(3,6);
--IN = valores pré definidos