Curso PL/SQL Flashcards

1
Q

O que é PL/SQL?

A

PL/SQL é a linguagem interna do Oracle que permite misturar comandos SQL com uma estrutura de programação.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Qual é a diferença entre SQL e PL/SQL?

A

SQL é uma linguagem de comandos sequenciais, enquanto PL/SQL é uma linguagem estruturada que permite programação.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

O que são procedures e funções em PL/SQL?

A

Procedures são blocos de código que realizam uma tarefa específica, enquanto funções retornam um valor e podem ser usadas em expressões.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Qual comando é utilizado para permitir a criação de novos usuários no Oracle?

A

ALTER SESSION SET “_ORACLE_SCRIPT” = true;

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Como se cria um novo usuário no Oracle?

A

Utilizando o comando CREATE USER, seguido do nome do usuário e da senha, por exemplo: CREATE USER cursoplsql IDENTIFIED BY cursoplsql;

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

O que é uma tablespace?

A

É uma área de trabalho onde o usuário criará suas tabelas. Pode ser definida como padrão ou personalizada.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Qual comando é usado para associar um usuário a uma tablespace padrão?

A

CREATE USER cursoplsql IDENTIFIED BY cursoplsql DEFAULT TABLESPACE USERS;

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

O que significa o comando GRANT no contexto de usuários no Oracle?

A

O comando GRANT é utilizado para conceder privilégios de acesso a um usuário.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

O que significa transformar um usuário em um “super usuário” no Oracle?

A

Significa conceder a ele privilégios totais, permitindo que ele tenha acesso completo ao banco de dados e possa realizar diversas operações.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Qual é a sintaxe para conceder privilégios de conexão e recursos a um usuário?

A

GRANT connect, resource TO nome_do_usuario;

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Por que é importante definir uma tablespace ao criar um usuário?

A

A tablespace é onde o usuário armazenará suas tabelas e dados, e definir uma ajuda a organizar o ambiente de trabalho.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

O que acontece se você não definir uma tablespace ao criar um usuário?

A

O usuário pode não ter um local definido para armazenar suas tabelas, o que pode causar problemas ao tentar criar objetos no banco de dados.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Como se cria uma chave primária em uma tabela no Oracle SQL?

A

Utilizando o comando ALTER TABLE nome_tabela ADD CONSTRAINT nome_restricao PRIMARY KEY (campo);.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

O que é uma chave estrangeira e onde ela é criada?

A

Uma chave estrangeira é uma restrição que liga um campo de uma tabela a uma chave primária de outra tabela. Ela é criada na tabela onde o campo não é chave primária.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Qual comando é utilizado para criar uma chave estrangeira?

A

ALTER TABLE nome_tabela ADD CONSTRAINT nome_restricao FOREIGN KEY (campo) REFERENCES outra_tabela (campo_referenciado);.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Como visualizar o esquema criado no Oracle SQL Developer?

A

Acessando o menu “Exibir > Data Modeler > Browser” e arrastando as tabelas para a área de trabalho.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

Por que é importante ter um esquema visual de banco de dados?

A

Para facilitar a compreensão das tabelas, seus campos e como elas se relacionam, ajudando na escrita das sentenças SQL.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

Qual a principal diferença entre SQL e PL/SQL?

A

SQL é uma linguagem declarativa padrão ANSI, enquanto PL/SQL é uma linguagem imperativa proprietária da Oracle.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

O que significa a sigla ANSI?

A

American National Standards Institute (Instituto Nacional Americano de Padrões)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q

O PL/SQL é uma linguagem padrão?

A

Não, é uma tecnologia exclusiva da Oracle, uma linguagem proprietária que só pode ser utilizada dentro de ferramentas da Oracle.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
21
Q

Quais comandos do SQL são utilizados para recuperação e manipulação de dados e tabelas?

A

insert, update, delete, select e create.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
22
Q

O que é uma linguagem declarativa?

A

Linguagem que não permite a criação de um programa inteiro, já que não possui comandos de decisão, como if ou else, e nem de execução de laços, como for ou while.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
23
Q

O que é uma linguagem imperativa?

A

Linguagem que possibilita a construção de programas completos.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
24
Q

O que é um script?

A

Uma lista de comandos sequenciais.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
25
Quais são os bancos de dados que utilizam o SQL?
Oracle, Microsoft SQL Server, MySQL, Postgre, SQLite, IBM Db2, Sybase e outros.
26
Qual a desvantagem do SQL?
O SQL não é uma linguagem estruturada.
27
O PL/SQL possui comandos de decisão?
Sim, dentro do PL/SQL encontramos todos aqueles controles de fluxo, tratamento de exceções, orientação a objeto, entre várias outras coisas.
28
O PL/SQL é uma linguagem dependente?
Não, pelo contrário, é uma tecnologia exclusiva da Oracle, uma linguagem proprietária que só pode ser utilizada dentro de ferramentas da Oracle.
29
O que fazemos na seção DECLARE de um programa PL/SQL?
Definimos os componentes de trabalho, como variáveis e constantes, que serão utilizados no programa.
30
Quais são as três palavras-chave que formam a estrutura básica de um programa PL/SQL?
DECLARE, BEGIN e END
31
O que fazemos na seção BEGIN de um programa PL/SQL?
Escrevemos os comandos de execução que manipulam os componentes de trabalho declarados, incluindo estruturas de seleção, laços e comandos SQL.
32
Qual é a função utilizada para exibir o conteúdo de uma variável na área de saída do script no Oracle SQL Developer?
dbms_output.put_line().
33
Qual comando utilizamos para habilitar a saída no Oracle SQL Developer e permitir que os resultados dos programas sejam exibidos?
SET SERVEROUTPUT ON;.
34
Por que é interessante colocar v_ na frente do nome de uma variável em PL/SQL?
Para identificar mais facilmente que se trata de uma variável declarada na área de DECLARE, facilitando a leitura e manutenção do código, principalmente em programas grandes.
35
Qual operador é utilizado para inicializar uma variável com um valor na seção DECLARE?
O operador :=.
36
O que acontece se você declarar uma variável, mas não a inicializar com um valor?
A variável assume o valor nulo (vazio).
37
Onde podemos alterar o valor de uma variável em um programa PL/SQL?
Na seção BEGIN, utilizando o operador de atribuição :=.
38
Qual a utilidade de usar bibliotecas externas fornecidas pela Oracle em PL/SQL?
As bibliotecas externas fornecem procedures e funções já prontas e embutidas que podem ser utilizadas para realizar diversas tarefas, como exibir informações na tela.
39
O que significa a instrução NUMBER(5) na declaração de uma variável?
Define o tipo da variável como número, com uma precisão de 5 dígitos.
40
O que acontece se você tentar executar um programa PL/SQL sem habilitar o SERVEROUTPUT?
O programa será executado com sucesso, mas a saída de dados (como o resultado de dbms_output.put_line()) não será exibida na área de saída do script.
41
Em que momento a variável recebe o valor inicial definido na declaração?
No momento em que o programa PL/SQL é executado e a declaração da variável é processada.
42
É possível usar os mesmos tipos de dados que usamos na criação de tabelas ao declarar variáveis em PL/SQL?
Sim, podemos utilizar os mesmos tipos de dados usados na criação de tabelas.
43
Qual é a finalidade do ponto e vírgula (;) no final de cada instrução em PL/SQL?
Indica que o comando ou instrução está completo.
44
Qual é a estrutura básica de um bloco PL/SQL?
DECLARE (...) BEGIN (...) END
45
Por que precisamos executar o comando SET SERVEROUTPUT ON na frente de alguns comandos PL/SQL?
Para poder executar bibliotecas dbms_output e ter um retorno na saída do script.
46
O que acontece quando um comando entre BEGIN e END não termina com ponto e vírgula em PL/SQL?
O PL/SQL indica um erro de sintaxe, sublinhando a linha com problema em vermelho.
47
Como são chamados os erros de sintaxe relacionados ao uso incorreto de comandos como DBMS_OUTPUT?
Erros "PLS"
48
O que indica a mensagem de erro "ORA-06550"?
Indica a linha e a coluna onde o erro foi encontrado no código PL/SQL.
49
Qual a importância de colocar o ponto e vírgula ao final de cada comando em um bloco PL/SQL?
O ponto e vírgula é essencial para que o compilador PL/SQL possa identificar e separar corretamente os comandos, evitando erros de sintaxe.
50
O que significa quando o código PL/SQL sublinha uma linha em vermelho?
Indica que há um erro de sintaxe naquela linha, geralmente causado por um comando incompleto ou incorreto.
51
Por que a mensagem de erro "PLS" está relacionada ao DBMS_OUTPUT quando há um erro de sintaxe próximo a ele?
Porque o DBMS_OUTPUT não pode ser usado no começo de uma linha ou em conjunto com outro comando sem a devida separação por um ponto e vírgula.
52
SET SERVEROUTPUT ON; DECLARE v_ID VARCHAR(10) := 'Novo programa PL/SQL'; BEGIN dbms_output.put_line(v_ID); v_ID := 2 ; dbms_output.put_line(v_ID); END; | Onde está o erro?
A variável v_ID foi declarada com um tamanho menor que o inicializado. A variável v_ID foi declarada como VARCHAR(10), mas a string atribuída a ela inicialmente é "Novo programa PL/SQL", que tem mais de 10 caracteres.
53
O que fazer se o usuário não tem privilégios suficientes para inserir dados na tabela?
Alterar o usuário para ter cota ilimitada na tablespace usando o comando ALTER USER.
54
Qual é a função do comando ALTER USER no contexto do PL/SQL?
O comando ALTER USER é utilizado para modificar as propriedades de um usuário, como conceder privilégios ou alterar a cota de tablespace.
55
Como podemos garantir que um bloco PL/SQL execute corretamente mesmo se ocorrer um erro durante a execução?
Podemos usar o tratamento de exceções com a cláusula EXCEPTION para capturar e lidar com erros que possam ocorrer durante a execução do bloco.
56
O que significa a cláusula QUOTA UNLIMITED ON USERS ao alterar um usuário?
Significa que o usuário terá uma cota ilimitada de espaço para armazenar dados na tablespace "USERS", permitindo que ele insira e armazene dados sem restrições de espaço.
57
Este é o primeiro produto a ser incluído na tabela PRODUTO_EXERCICIO: COD: 41232 DESCRICAO: Sabor de Verão - Laranja - 1 Litro CATEGORIA: Sucos de Frutas Faça um programa em PL/SQL que inicialize 3 variáveis que recebam os valores acima e os incluam na tabela PRODUTO_EXERCICIO. Não esqueça de executar o comando.
DECLARE v_COD VARCHAR(5):= '41232'; v_DESCRICAO VARCHAR2(100) := 'Sabor de Verão - Laranja - 1 Litro'; v_CATEGORIA VARCHAR(100):= 'Sucos de Frutas'; BEGIN INSERT INTO PRODUTO_EXERCICIO (COD, DESCRICAO, CATEGORIA) VALUES (v_COD, v_DESCRICAO, v_CATEGORIA); COMMIT; END;
58
Como o COMMIT afeta a visibilidade das transações em diferentes instâncias?
O COMMIT permite que as alterações feitas em uma instância sejam propagadas e visíveis em outras instâncias.
59
O que é uma transação no contexto de bancos de dados?
Uma transação é um conjunto de operações que são executadas como uma única unidade de trabalho, garantindo que todas as operações sejam concluídas com sucesso ou nenhuma delas seja aplicada.
60
Como o COMMIT afeta a concorrência em um banco de dados?
O COMMIT permite que outras transações vejam as alterações feitas, facilitando a concorrência entre usuários e garantindo que todos tenham acesso às informações mais atualizadas.
61
É muito importante termos o conceito do controle de transação no PL/SQL, pois uma transação mal definida pode gerar dados inconsistentes. Sobre isso, quais das alternativas abaixo são verdadeiras? A) Os comandos de INSERT, UPDATE e DELETE têm autocommit. B)A transação é aberta no primeiro comando SQL executado. C)Se dentro do bloco não contiver comandos de fim de transação, a transação permanece aberta depois de passar pelo END do bloco.
B)A transação é aberta no primeiro comando SQL executado. C)Se dentro do bloco não contiver comandos de fim de transação, a transação permanece aberta depois de passar pelo END do bloco.
62
O que é o Percent Type no PL/SQL?
É uma forma de declarar variáveis com o mesmo tipo de dados que os campos de uma tabela, evitando problemas com alterações no esquema da tabela.
63
Como se declara uma variável usando Percent Type?
Utiliza-se a sintaxe: NOME_TABELA.NOME_CAMPO%type. Por exemplo, SEGMERCADO.ID%type.
64
Qual é a vantagem de usar Percent Type?
A vantagem é que, se o tipo ou o tamanho do campo na tabela mudar, a variável se adapta automaticamente, evitando erros.
65
O que acontece se tentarmos inserir um valor que excede o tamanho do campo na tabela?
Um erro ocorrerá, pois o valor não será compatível com o tipo ou tamanho definido para o campo.
66
O que deve ser feito para garantir a compatibilidade dos tipos de dados ao inserir informações em uma tabela?
As variáveis devem ser declaradas usando Percent Type para que correspondam aos tipos dos campos na tabela.
67
Por que é importante garantir a compatibilidade dos tipos de dados em PL/SQL?
Para evitar erros de execução e garantir que os dados sejam inseridos corretamente na tabela.
68
O que significa a declaração v_DESCRICAO SEGMERCADO.DESCRICAO%type?
Significa que a variável v_DESCRICAO terá o mesmo tipo de dados que o campo DESCRICAO da tabela SEGMERCADO.
69
Quais tipos de dados podem ser utilizados com Percent Type?
Qualquer tipo de dado que esteja definido na tabela, como NUMBER, VARCHAR2, DATE, entre outros.
70
Como o uso de Percent Type pode impactar a manutenção do código?
Facilita a manutenção, pois, ao mudar o esquema da tabela, não é necessário alterar o código PL/SQL, desde que as variáveis estejam usando Percent Type.
71
DECLARE v_COD VARCHAR(5):= '41232'; v_DESCRICAO VARCHAR2(100) := 'Sabor de Verão - Laranja - 1 Litro'; v_CATEGORIA VARCHAR(100):= 'Sucos de Frutas'; BEGIN INSERT INTO PRODUTO_EXERCICIO (COD, DESCRICAO, CATEGORIA) VALUES (v_COD, v_DESCRICAO, v_CATEGORIA); COMMIT; END; Refaça esse script, incluindo o segundo produto: COD: 32223 DESCRICAO: Sabor de Verão - Uva - 1 Litro CATEGORIA: Sucos de Frutas
DECLARE v_COD produto_exercicio.cod%type := '32223'; v_DESCRICAO produto_exercicio.descricao%type := 'Sabor de Verão - Uva - 1 Litro'; v_CATEGORIA produto_exercicio.categoria%type := 'Sucos de Frutas'; BEGIN INSERT INTO PRODUTO_EXERCICIO (COD, DESCRICAO, CATEGORIA) VALUES (v_COD, v_DESCRICAO, v_CATEGORIA); COMMIT; END;
72
Qual é a vantagem do PERCENT TYPE?
Se houver mudanças na estrutura do banco de dados, o nosso programa não apresentará problemas. O PERCENT TYPE usará sempre o tipo definido na tabela. Assim, se o DBA mudar a estrutura da tabela (mudança de propriedades do campo), a nossa variável no PL/SQL irá também mudar.
73
O que é case sensitivity em SQL?
É a sensibilidade a maiúsculas e minúsculas nas comparações de texto, onde 'Atacado' e 'atacado' são considerados diferentes.
74
Como podemos contornar o problema de case sensitivity em comparações de texto no Oracle?
Utilizando a função UPPER(), que transforma todas as letras em maiúsculas.
75
O que acontece se tentarmos comparar um texto em minúsculas com um texto em maiúsculas sem usar UPPER()?
A comparação não encontrará correspondência e retornará um resultado vazio.
76
O usuário usa sempre o hífen (-) para separar o nome do produto, o sabor e a embalagem. Note um exemplo abaixo: DESCRICAO: Sabor de Verão - Uva - 1 Litro Mas queremos que o produto seja salvo com o símbolo "maior que" (>) no lugar do hífen. Para isso, modifique o script PL/SQL abaixo para que, caso o usuário inclua o hífen como separador dos nomes e classificações do produto, ele seja substituído pelo "maior que" (>): DECLARE v_COD produto_exercicio.cod%type := '32223'; v_DESCRICAO produto_exercicio.descricao%type := 'Sabor de Verão - Uva - 1 Litro'; v_CATEGORIA produto_exercicio.categoria%type := 'Sucos de Frutas'; BEGIN INSERT INTO PRODUTO_EXERCICIO (COD, DESCRICAO, CATEGORIA) VALUES (v_COD, v_DESCRICAO, v_CATEGORIA); COMMIT; END; E, como teste, inclua um novo produto: COD: 67120 DESCRICAO: Frescor da Montanha - Aroma Limão - 1 Litro CATEGORIA: Águas
DECLARE v_COD produto_exercicio.cod%type := '67120'; v_DESCRICAO produto_exercicio.descricao%type := 'Frescor da Montanha - Aroma Limão - 1 Litro'; v_CATEGORIA produto_exercicio.categoria%type := 'Águas'; BEGIN INSERT INTO PRODUTO_EXERCICIO (COD, DESCRICAO, CATEGORIA) VALUES (v_COD, REPLACE(v_DESCRICAO,'-','>') , v_CATEGORIA); COMMIT; END;
77
Como podemos alterar o valor de uma variável em um bloco PL/SQL?
Podemos alterar o valor de uma variável utilizando a sintaxe variavel := novo_valor;.
78
O que é um bloco aninhado no PL/SQL?
Um bloco aninhado é um bloco PL/SQL que é definido dentro de outro bloco, permitindo a organização e a modularização do código.
79
Faça um programa em PL/SQL que substitua o - por > nos outros dois registros da tabela.
DECLARE v_COD produto_exercicio.cod%type; BEGIN v_COD := '41232'; UPDATE PRODUTO_EXERCICIO SET DESCRICAO = REPLACE(DESCRICAO,'-','>') WHERE COD = v_COD; v_COD := '32223'; UPDATE PRODUTO_EXERCICIO SET DESCRICAO = REPLACE(DESCRICAO,'-','>') WHERE COD = v_COD; COMMIT; END;
80
Qual é a diferença entre DELETE e TRUNCATE em SQL?
DELETE remove registros de uma tabela com a possibilidade de usar condições WHERE, enquanto TRUNCATE remove todos os registros de uma tabela de forma rápida e não pode ser revertido com ROLLBACK.
81
O que é uma variável de tipo %TYPE em PL/SQL?
Uma variável de tipo %TYPE é uma variável que herda o tipo de dados de uma coluna de uma tabela, garantindo que a variável tenha o mesmo tipo e tamanho da coluna correspondente.
82
Qual é a diferença entre um cursor implícito e um cursor explícito?
Um cursor implícito é criado automaticamente pelo Oracle para consultas SQL que retornam apenas uma linha, enquanto um cursor explícito é definido pelo programador para consultas que podem retornar múltiplas linhas.
83
O que é um bloco anônimo em PL/SQL?
Um bloco anônimo é um bloco de código PL/SQL que não tem um nome e não é armazenado no banco de dados. Ele é usado para executar operações temporárias e pode ser executado diretamente.
84
O que é uma função em PL/SQL e como ela difere de um procedimento?
Uma função em PL/SQL é um bloco de código que retorna um valor e pode ser chamado em expressões. Um procedimento, por outro lado, não retorna um valor e é usado para executar ações.
85
O que é uma procedure em PL/SQL?
Uma procedure é um programa nomeado que aceita parâmetros e executa comandos PL/SQL internamente.
86
Quais são as partes principais da estrutura de uma procedure?
A estrutura de uma procedure é composta por CREATE, IS, BEGIN e END.
87
Como declaramos parâmetros em uma procedure?
Os parâmetros são declarados após o nome da procedure, entre parênteses, usando a cláusula IN seguida do tipo de dado.
88
Qual é a diferença entre variáveis de parâmetro e variáveis internas em uma procedure?
Variáveis de parâmetro são passadas para a procedure e declaradas na lista de parâmetros, enquanto variáveis internas são declaradas após o IS e usadas dentro do corpo da procedure.
89
Como chamamos uma procedure em PL/SQL?
Podemos chamar uma procedure usando EXECUTE seguido do nome da procedure e passando os parâmetros, ou usando um bloco BEGIN e END.
90
Qual é a diferença entre usar EXECUTE e um bloco BEGIN...END para chamar uma procedure?
Usar EXECUTE é uma forma direta de chamar a procedure, enquanto usar um bloco BEGIN...END permite incluir múltiplas instruções PL/SQL, se necessário.
91
O que deve ser incluído no espaço entre o IS e o BEGIN, na criação de uma procedure?
A declaração de todas as variáveis que serão executadas no programa.
92
Como podemos alterar uma procedure existente?
Utilizando o comando CREATE OR REPLACE, que permite substituir a procedure se ela já existir.
93
Como podemos excluir uma procedure no Oracle PL/SQL?
Usando o comando DROP PROCEDURE seguido do nome da procedure que desejamos remover.
94
O que acontece se tentarmos criar uma procedure com um nome que já existe sem usar CREATE OR REPLACE?
Receberemos um erro informando que o nome já está sendo usado por um objeto existente (ORA-00955).
95
Qual é a sintaxe básica para criar uma procedure no Oracle PL/SQL?
CREATE OR REPLACE PROCEDURE nome_da_procedure (parametros) IS BEGIN ... END;
96
Qual é a função da cláusula INTO em um comando SELECT no PL/SQL?
A cláusula INTO é usada para armazenar o resultado da consulta em uma variável.
97
O que acontece se tentarmos atribuir diretamente o resultado de um SELECT a uma variável sem usar INTO?
O Oracle SQL Developer mostrará um erro, pois a sintaxe não está correta.
98
O que devemos fazer para garantir que o resultado de um SELECT seja armazenado em uma variável?
Usar a cláusula INTO seguida do nome da variável após o campo que estamos selecionando.
99
O que acontece se não inicializarmos a variável v_DESCRICAO?
A variável será nula até que um valor seja atribuído a ela através do comando SELECT.
100
O que é necessário para usar o SELECT INTO no PL/SQL?
O SELECT deve retornar apenas uma célula (uma linha e uma coluna).
101
O que acontece se o SELECT retornar mais de uma linha?
Ocorre um erro, pois não podemos associar um array a uma variável que espera um único valor.
102
Como podemos obter múltiplos valores de uma tabela no PL/SQL?
Precisamos realizar dois comandos SELECT separados, cada um armazenando seu resultado em variáveis distintas.
103
Qual é o erro comum ao tentar usar múltiplos campos no SELECT INTO?
O erro ocorre porque não podemos usar o INTO para mais de um campo em um único SELECT.
104
O que significa o erro "ORA-01422"?
Esse erro indica que a extração exata retornou mais do que o número solicitado de linhas, ou seja, o SELECT retornou mais de uma linha quando se esperava apenas uma.
105
O que é uma matriz no contexto de um SELECT?
Uma matriz é um resultado que contém mais de uma linha e/ou coluna, ou seja, um conjunto de dados retornado pela consulta.
106
Como podemos exibir múltiplos resultados no PL/SQL?
Podemos usar dbms_output.put_line() para exibir cada variável que contém os resultados desejados após realizar os SELECT apropriados.
107
Qual é a função do SET SERVEROUTPUT ON?
Essa instrução ativa a saída do servidor, permitindo que as mensagens geradas pelo dbms_output.put_line() sejam exibidas no console.
108
Por que é importante garantir que o SELECT retorne apenas um único valor ao usar INTO?
Para evitar erros de execução e garantir que a variável receba um valor específico, evitando a tentativa de associar um array a uma variável que espera um único valor.
109
O que é uma função em PL/SQL?
Uma função recebe parâmetros e retorna um valor. É utilizada para realizar cálculos ou operações que resultam em um valor.
110
Qual a estrutura básica para criar uma função em PL/SQL?
A estrutura básica é: CREATE OR REPLACE FUNCTION nome_da_função (parâmetros) RETURN tipo_de_retorno IS BEGIN ... END;
111
O que fazemos no corpo da função após o BEGIN?
No corpo da função, realizamos operações, como consultas SQL, e usamos a palavra-chave RETURN para especificar o valor que será retornado.
112
Qual é a diferença entre o uso de RETURN na definição da função e no corpo da função?
Na definição, RETURN especifica o tipo de dado que a função irá retornar. No corpo da função, RETURN é usado para indicar qual valor específico será retornado.
113
Como garantimos que a variável de retorno da função coincida com o tipo especificado?
Ao declarar a variável de retorno, usamos o mesmo tipo que foi especificado no RETURN da função, garantindo que ambos sejam compatíveis.
114
O que acontece se a função retornar um tipo de dado diferente do especificado?
Se a função tentar retornar um tipo de dado diferente do especificado no RETURN, ocorrerá um erro de compilação.
115
Como declarar uma variável no ambiente Oracle?
VARIABLE variavel tipo;
116
Qual comando é usado para executar uma função e armazenar seu resultado em uma variável?
EXECUTE :variavel := função;
117
Como exibir o conteúdo de uma variável no ambiente Oracle?
PRINT variavel;
118
O que acontece se você tentar executar um SELECT diretamente em uma variável em PL/SQL?
O Oracle não aceita a sintaxe SELECT diretamente para atribuição a uma variável; deve-se usar uma função que retorne o valor desejado.
119
O que acontece se tentarmos inserir um cliente com um SEGMERCADO_ID que não existe na tabela SEGMERCADO?
O comando INSERT falhará e gerará um erro de violação de chave estrangeira, pois o SEGMERCADO_ID deve referenciar um registro existente na tabela SEGMERCADO.
120
Qual a estrutura utilizada para classificar o faturamento em categorias? (em um comando PL/SQL)
A estrutura IF, com ELSIF e ELSE.
121
Qual é a sintaxe correta para encadear condições em PL/SQL?
IF ... THEN ... ELSIF ... THEN ... ELSE ... END IF;
122
SET SERVEROUTPUT ON DECLARE v_FATURAMENTO CLIENTE.FATURAMENTO_PREVISTO%TYPE := 120000; v_CATEGORIA CLIENTE.CATEGORIA%TYPE; BEGIN IF v_FATURAMENTO <= 10000 THEN v_CATEGORIA := 'PEQUENO'; ELSIF v_FATURAMENTO <= 50000 THEN v_CATEGORIA := 'MÉDIO'; ELSIF v_FATURAMENTO <= 100000 THEN v_CATEGORIA := 'MÉDIO GRANDE'; ELSE v_CATEGORIA := 'GRANDE'; END IF; dbms_output.put_line(v_CATEGORIA); END; | O que a variável v_FATURAMENTO representa no código?
Ela armazena o valor do faturamento do cliente, que é utilizado para determinar a categoria.
123
SET SERVEROUTPUT ON DECLARE v_FATURAMENTO CLIENTE.FATURAMENTO_PREVISTO%TYPE := 120000; v_CATEGORIA CLIENTE.CATEGORIA%TYPE; BEGIN IF v_FATURAMENTO <= 10000 THEN v_CATEGORIA := 'PEQUENO'; ELSIF v_FATURAMENTO <= 50000 THEN v_CATEGORIA := 'MÉDIO'; ELSIF v_FATURAMENTO <= 100000 THEN v_CATEGORIA := 'MÉDIO GRANDE'; ELSE v_CATEGORIA := 'GRANDE'; END IF; dbms_output.put_line(v_CATEGORIA); END; | Qual é o tipo da variável v_FATURAMENTO?
CLIENTE.FATURAMENTO_PREVISTO%type, que é o mesmo tipo da coluna de faturamento na tabela de clientes.
124
Qual é a importância do END IF; no código?
Ele indica o final da estrutura condicional IF, encerrando a lógica de classificação.
125
O que deve ser feito se o código não reconhecer ELSIF?
Verificar se foi escrito corretamente, pois a sintaxe correta é ELSIF (sem o "E" adicional).
126
Como o uso de ELSIF melhora a legibilidade do código em comparação com múltiplos IF aninhados?
O uso de ELSIF permite uma estrutura mais clara e linear, facilitando a compreensão das condições e evitando a complexidade de aninhamentos desnecessários.
127
Qual é a diferença entre THEN e ELSE na estrutura condicional?
THEN é usado para definir o que deve ser executado se a condição for verdadeira, enquanto ELSE é utilizado para definir o que deve ser executado se nenhuma das condições anteriores for atendida.
128
Como podemos otimizar o código para evitar a repetição de condições?
Podemos reestruturar as condições para que cada ELSIF verifique apenas o que é necessário, sabendo que as condições anteriores já foram testadas.
129
Como podemos testar a função categoria_cliente após sua criação?
Podemos testar a função categoria_cliente criando um bloco de código que declare uma variável, execute a função passando um valor de faturamento como argumento e, em seguida, imprima o resultado. Por exemplo, usando VARIABLE g_CATEGORIA VARCHAR2(100); EXECUTE :g_CATEGORIA:=categoria_cliente(10000); PRINT g_CATEGORIA;.