Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
-- OU
ListaClientes
Stored Procedure no SQL Server
• Atividade:
– Crie e execute a Stored Procedure vista
anteriormente em seu banco de dados.
– Agora faça outra Stored Procedure, que tem o
objetivo de listar o nome do cliente, o título do
filme e a data da locação para todas as locações
ainda não devolvidas.
Stored Procedure no SQL Server
• Vamos agora melhorar um pouco a nossa
Stored Procedure. Vamos alterá-la para que
ela traga somente os clientes de acordo com
um parâmetro, que será informado no
momento da execução;
• Para isso devemos inserir um parâmetro que
será recebido pela Stored Procedure;
Stored Procedure no SQL Server
• Parâmetros devem ser definidos antes da
cláusula AS e precisam ser iniciados com o
símbolo @;
• Além disso, precisam ser seguidos pelo tipo de
dados que será recebido naquele parâmetro;
• Veja o exemplo a seguir:
Stored Procedure no SQL Server
• O código ficará assim:
ALTER PROCEDURE ListaClientes
@ParteNome VARCHAR(MAX)
AS
BEGIN
SELECT
P.PessoaCodigo, P.Nome
FROM
Pessoa P
WHERE
P.ECliente = 1 AND
P.Nome LIKE @ParteNome + '%'
END
Stored Procedure no SQL Server
• Acrescentamos as linhas em negrito;
• A Stored Procedure agora traz todos os
clientes cujo nome comece com o valor
passado como parâmetro. Veja:
Exec ListaClientes 'L'
Stored Procedure no SQL Server
• Atividade:
– Crie e execute a Stored Procedure vista
anteriormente em seu banco de dados.
– Altere a Stored Procedure, que lista o nome do
cliente, o título do filme e a data das locações
ainda não devolvidas incluindo uma opção para
que o usuário informe parte do título do filme
que ele deseja pesquisar.
Stored Procedure no SQL Server
• Até agora, utilizamos somente comandos SQL
padrão nas Stored Procedures;
• O resultado que aparece na aba Results do
SQL Server Management Studio está se
originando justamente na cláusula SELECT de
nossas sentenças;
• Porém, é possível utilizar variáveis e retornar o
seu valor através de um SELECT;
Stored Procedure no SQL Server
• Veja o exemplo:
CREATE PROCEDURE QuantClientes
AS
BEGIN
DECLARE
@TotalClientes INT
-- Opção 2
CASE
WHEN <teste condicional 1> THEN <resultado 1>
[WHEN <teste condicional 2> THEN <resultado 2>]
[...]
[ ELSE <resultado else> ]
END
Estrutura condicional
• CASE:
– Exemplo 1:
...
SET @var1 = CASE @mes
WHEN 1 THEN 'Janeiro'
WHEN 2 THEN 'Fevereiro'
WHEN 3 THEN 'Março'
...
ELSE 'Mês inválido'
END
...
Estrutura condicional
• CASE:
– Exemplo 2:
...
SELECT
Data_Locacao,
CASE
WHEN L.Data_Devolucao IS NULL THEN 'Em aberto'
ELSE 'Devolvida'
END Status
FROM
LOCACAO L
...
Estrutura condicional
• IF:
– O IF permite a criação de uma estrutura
condicional simples IF...[ELSE];
– Sintaxe:
IF <expressão lógica>
[BEGIN]
<comandos>
[END]
[ELSE]
[BEGIN]
<comandos>
[END]
Estrutura condicional
• IF:
– Exemplo:
CREATE PROCEDURE VerificaSituacao
@cliente int
AS BEGIN
DECLARE
@var1 INT,
@var2 VARCHAR(MAX)
SET @var1 = (SELECT
COUNT(L.PessoaCodigoCliente)
FROM
LOCACAO L
WHERE
L.DataDevolucao IS NULL AND
L.PessoaCodigoCliente = @cliente)
IF @var1 > 0
SET @var2 = 'Possui locações em aberto!'
ELSE
SET @var2 = 'Não possui locações em aberto!'
PRINT @var2
END
Cursores
• CURSOR:
– Os cursores permitem que sejam recuperadas
determinadas linhas referentes a uma consulta
SQL;
– O cursor permite a navegação pelo resultado da
sentença utilizando, por exemplo, uma
estrutura de repetição.
Cursores
• CURSOR:
– Um cursor é uma variável que precisa ser
declarada como as demais, porém, não
necessita do prefixo @ como as outras;
– Uma vez declarado o cursor e definida a
sentença que irá recuperar os dados ele deve
ser aberto através do comando OPEN;
– Para acessar as linhas de um cursor, deve ser
utilizado o comando FETCH;
Cursores
• CURSOR:
– Muitas opções podem definir o tipo de cursor,
porém, a princípio, nos interessam as opções
relativas à navegação pelas linhas, sendo:
• FORWARD_ONLY: esta é a opção padrão, onde o
cursor permite navegação apenas para frente, ou
seja, para a linha seguinte
• SCROLL: o cursor permite a navegação em ambos
os sentidos.
Cursores
• CURSOR:
– Sintaxe:
DECLARE <nome do cursor> CURSOR [FORWARD_ONLY | SCROLL] FOR
<sentença SQL>
Cursores
• CURSOR:
– Vejamos alguns exemplos:
– Declaração do cursor:
// Declaração de um cursor chamado Lista
DECLARE Lista CURSOR SCROLL FOR
SELECT
PessoaCodigo,
Nome
FROM
Pessoa
Cursores
• CURSOR:
– Abertura do cursor:
// Abertura do cursor Lista
OPEN Lista