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:
Postar um comentário