Pesquisar neste blog

16/03/2022

Comandos no SQL Server #3














FUNÇÕES NO SQL SERVER

Funções em T-SQL: São rotinas que retornam valores ou tabelas. Com elas
você poderá construir visões parametrizadas ou ainda construir suas próprias
funções, semelhantes a DATE(), Rtrim() dentre outras.

Existem 3 tipos de funções possíveis
- Scalar-valued user-defined function
- Multi-statement table-valued function
- inline table-valued function 

Funções Escalares: Retornam um valor único de dados do tipo definido
na cláusula RETURNS. Para uma função escalar embutida, não há um corpo
de função; o valor escalar é o resultado de uma única instrução. O retorno
pode ser qualquer tipo de dados, execeto text, ntext, image, cursor e timestamp.

-- função para excluir
CREATE FUNCTION Trim(@ST VARCHAR (1000
  returns VARCHAR?(1000)
   BEGIN
     RETURN (Ltrim(Rtrim(@ST))) --remove os espaços na esquerda
   END


--Excemplo função eslar TRIM
SELECT '>' + ('  Silva Telles   ')+'<' union
SELECT '>' + DBO.TRIM('   Silva Telles      ') + '<'


____________________________//__________________________

Exemplo 2

--GERANDO A FUNÇÃO
CREATE FUNCTION inventario(@ProductID INT) 
  return INT AS
-- Retorna estoque de produto
BEGIN 
  DECLARE @ret INT;
  SELECT @ret = Sum(p.quantity)
FROM production.productinventory p
      WHERE p.productid = @ProductID
AND p.localionid = '6';
     IF ( @ret IS NULL)
     SET @ret = 0;
     RETURN @ret;
     END;

--Invocando a função inventario
SELECT productmodelid, name, dbo.inventario(productid) 
    AS Estoque_atual
      FROM production.product
    WHERE productmodelid BETWEEN 75 AND 80;


_______________________________//_______________________________

Procedures (Procedimentos armazenados)
Um procedimento armazenado é um tipo especial de script escrito eem Transact-SQL,
usando a linguagem SQL e extensões SQL. Os procedimentos são salvos em um 
servidor de banco de dados para aperfeiçoar o desempenho e a consistência das 
tarefas repetitivas.
Procedimentos armazenados podem ser usados para as seguintes tarefas:
- Controlar autorização de acesso
- Criar um caminho de auditoria de atividades em tabelas de banco de dados
- Separar instruções de definição e de manipulação de dados relativas a um banco de
dados das aplicações que o acessam.

--Retornar apenas o conteúdo estático

CREATE PROCEDURE TESTE1 
 AS BEGIN SELECT 'O famoso hello world!'
   END

--Executando Procedure
EXEC TESTE1 

_______________________________/ / _____________________________


TRIGGERS: É um bloco de comandos Transact-SQL que é automaticamente executado 
quando um comando INSERT, DELETE ou UPDATE for executado em uma tabela do banco de dados.
Os Triggers são usados para realizar tarefas relacionadas com validações, restrições de 
acesso, rotinas de segurança e consistência de dados; desta forma estes controles deixam
de ser executados pela aplicação e passam a ser executados pelos Triggerss em determinadas
situações.

Sintaxe:
CREATE TRIGGER [nome do trigger] ON [nome da tabela]
  [FOR/AFTER/INSTEAD OF] [INSERT/UPDATE/DELETE] AS
    --CORPO DO TRIGGER

--Os parâmetros são:
NOME DO TRIGGER:
NOME DA TABELA: Tabela â qual o gatilho estará ligado, para ser disparado mediante
ações de insert, update ou delete.
FOR/AFTER/INSTEAD OF: uma dessas opções deve ser escolhida para definir o momento em
que o trigger será disparado.
INSERT/UPDATE/DELETE: uma ou várias dessas opções (separadas por vírgula) devem ser
indicadas para informar ao banco qual é a ação que disparará o gatilho.

Existem 2 tipos de triggers:
- DML (Acionadas através de comandos de manipulação de dados)
- DDL ((Acionadas através de comandos de definição de objetos no banco de dados)

Exemplo:
CREATE TRIGGER tg_aud_sal --unico registro
  ON salario AFTER UPDATE AS BEGIN
DECLARE @sal_antigo DECIMAL (10,2)
DECLARE @sal_novo DECIMAL (10,2)
DECLARE @matricula int

SELECT @matricula = (SELECT matricula FROM inserted)
SELECT @sal_antigo = (SELECT salario FROM deleted)
SELECT @sal_novo = (SELECT salario FROM inserted)

   INSERT INTO auditoria_salario VALUES
     (@matricula isnull (@sal_antigo, 0), @sal_novo, SYSTER_USER, getdate)__
   END


--Testando triggers
upadate salario set salario = '2500' where matricula = '1'
upadate salario set salario = '3000' where matricula = '2'

select *from auditoria_salario 


________________________ / / _______________________________________

TRIGGER no SQL Server

ALTER TRIGER trg_atualiza_saldo_cc ON conta_corrente --aluliza saldo onde a conta corrente recebe
FOR INSERT AS --inclui um registro 
  BEGIN 
    DECLARE @CONTA_C VARCHAR(20),--declara algumas variaveis
         @VALOR DECIMAL (10, 2),
         @OPER CHAR(1)
    SELECT @CONTA_C = I.conta_c,--faz a seleção
           @VALOR = I.valor,
   @OPER = I.operacao
    FROM inserted I -- e atribui o insert das variavéis
D = debito   C = crédito
   IF @OPER NOT IN ('D', 'C') BEGIN
     PRINT 'OPERACAO NAO PERMITIDA' 

ROLL BACK TRANSACTION 
    END
   ELSE IF (SELECT Count(*)
     FROM saldo_conta
     WHERE conta_c = @conta_c) = 0
    AND @OPER = 'D' -- e operação igual à débito
    BEGIN
      INSERT INTO saldo_conta
      VALUES   (@CONTA_C, @VALOR *-1) -- se está emprestando entao fica devendo
   END
  ELSE IF (SELECT Count(*)
    FROM saldo_conta
    WHERE conta_c = @conta_c) = 0
   AND @OPER = 'C'
   BEGIN
  INSERT INTO saldo_conta
  SET saldo = saldo + @VALOR
WHERE conta_c = @CONTA_C
   END
  ELSE IF (SELECT Count(*)
FROM saldo_conta
WHERE conta_c = @conta_c) > 0
AND @OPER = 'D'
     BEGIN
    UPDATE saldo_conta
SET saldo = saldo - @VALOR
WHERE conta_c = @CONTA_C
    END
END


Palavras chave:

FUNCIONES EN SERVIDOR SQL
FUNGSI ING SQL SERVER
פונקציות ב-SQL SERVER
ФУНКЦИИ В SQL СЕРВЕРЕ
ФУНКЦІЇ В SQL СЕРВЕРУ
SQL सर्भरमा कार्यहरू
CÁC CHỨC NĂNG TRONG SQL SERVER
MGA FUNCTION SA SQL SERVER
FUNKCIJE U SQL SERVERU
FUNCIONS EN SQL SERVER
FUNCIONS EN SQL SERVER

Nenhum comentário: