As 65 principais perguntas da entrevista PL / SQL & Respostas

Anonim

baixar PDF

1) O que é PL SQL?

PL SQL é uma linguagem procedural que possui SQL interativo, bem como construções de linguagem de programação procedural como ramificação condicional e iteração.

2) Diferencie entre% ROWTYPE e TYPE RECORD.

% ROWTYPE é usado quando uma consulta retorna uma linha inteira de uma tabela ou visão.

TYPE RECORD, por outro lado, é usado quando uma consulta retorna colunas de diferentes tabelas ou visualizações.

Por exemplo. TIPO r_emp é RECORD (sno smp.smpno% type, sname smp sname% type)

e_rec smp% ROWTYPE

O cursor c1 é selecionado smpno, departamento de smp;

e_rec c1% ROWTYPE

3) Explique os usos do cursor.

Cursor é uma área privada nomeada em SQL a partir da qual as informações podem ser acessadas. Eles são obrigados a processar cada linha individualmente para consultas que retornam várias linhas.

4) Mostrar o código de um cursor para loop.

O cursor declara% ROWTYPE como índice de loop implicitamente. Em seguida, ele abre um cursor, obtém linhas de valores do conjunto ativo nos campos do registro e fecha quando todos os registros são processados.

Por exemplo. PARA smp_rec IN C1 LOOP

totalsal = totalsal + smp_recsal;

ENDLOOP;

5) Explique os usos do acionador de banco de dados.

Uma unidade de programa PL / SQL associada a uma determinada tabela de banco de dados é chamada de acionador de banco de dados. É usado para :

1) Modificações de dados de auditoria.

2) Registre eventos de forma transparente.

3) Aplicar regras de negócios complexas.

4) Manter tabelas de réplicas

5) Derive os valores da coluna

6) Implementar autorizações de segurança complexas

6) Quais são os dois tipos de exceções.

O tratamento de erros de parte do bloco PL / SQL é chamado de Exceção. Eles têm dois tipos: user_defined e predefinidos.

7) Mostre algumas exceções predefinidas.

DUP_VAL_ON_INDEX

DIVISÃO POR ZERO

NENHUM DADO ENCONTRADO

TOO_MANY_ROWS

CURSOR_ALREADY_OPEN

NÚMERO INVÁLIDO

INVALID_CURSOR

PROGRAM_ERROR

TIMEOUT _ON_RESOURCE

STORAGE_ERROR

LOGON NEGADO

VALUE_ERROR

etc.

8) Explique Raise_application_error.

É um procedimento do pacote DBMS_STANDARD que permite a emissão de mensagens de erro definidas pelo usuário do acionador do banco de dados ou subprograma armazenado.

9) Mostre como funções e procedimentos são chamados em um bloco PL SQL.

A função é chamada como parte de uma expressão.

total: = calcular_sal ('b644')

O procedimento é chamado como uma instrução em PL / SQL.

calcule_bonus ('b644');

10) Explique duas tabelas virtuais disponíveis no momento da execução do gatilho do banco de dados.

As colunas da tabela são chamadas de THEN.column_name e NOW.column_name.

Para gatilhos relacionados a INSERT, os valores NOW.column_name estão disponíveis apenas.

Para gatilhos relacionados a DELETE, os valores THEN.column_name estão disponíveis apenas.

Para gatilhos relacionados a UPDATE, ambas as colunas da tabela estão disponíveis.

11) Quais são as regras a serem aplicadas aos NULLs durante as comparações?

1) NULL nunca é TRUE ou FALSE

2) NULL não pode ser igual ou diferente de outros valores

3) Se um valor em uma expressão for NULL, a própria expressão será avaliada como NULL, exceto para o operador de concatenação (||)

12) Como um processo de PL SQL é compilado?

O processo de compilação inclui verificação de sintaxe, processos de geração de código p e ligação.

A verificação de sintaxe verifica se há erros de compilação nos códigos PL SQL. Quando todos os erros são corrigidos, um endereço de armazenamento é atribuído às variáveis ​​que contêm os dados. É chamado de vinculação. P-code é uma lista de instruções para o mecanismo PL SQL. O código P é armazenado no banco de dados para blocos nomeados e é usado na próxima vez que for executado.

13) Diferencie entre erros de sintaxe e de tempo de execução.

Um erro de sintaxe pode ser facilmente detectado por um compilador PL / SQL. Por exemplo, grafia incorreta.

Um erro de tempo de execução é tratado com a ajuda da seção de tratamento de exceções em um bloco PL / SQL. Por exemplo, a instrução SELECT INTO, que não retorna nenhuma linha.

14) Explique o Commit, Rollback e Savepoint.

Para uma instrução COMMIT, o seguinte é verdadeiro:

  • Outros usuários podem ver as alterações de dados feitas pela transação.
  • Os bloqueios adquiridos pela transação são liberados.
  • O trabalho realizado pela transação torna-se permanente.

Uma instrução ROLLBACK é emitida quando a transação termina e o seguinte é verdadeiro.

  • O trabalho feito em uma transição é desfeito como se nunca tivesse sido emitido.
  • Todos os bloqueios adquiridos pela transação são liberados.

Desfaz todo o trabalho realizado pelo usuário em uma transação. Com SAVEPOINT, apenas parte da transação pode ser desfeita.

15) Definir cursores implícitos e explícitos.

Um cursor está implícito por padrão. O usuário não pode controlar ou processar as informações neste cursor.

Se uma consulta retornar várias linhas de dados, o programa define um cursor explícito. Isso permite que o aplicativo processe cada linha sequencialmente conforme o cursor a retorna.

16) Explique o erro da tabela mutante.

Ocorre quando um gatilho tenta atualizar uma linha que está usando no momento. Ele é corrigido usando visualizações ou tabelas temporárias, de modo que o banco de dados seleciona uma e atualiza a outra.

17) Quando é necessária uma declaração de declaração?

A instrução DECLARE é usada por blocos anônimos PL SQL, como procedimentos autônomos não armazenados. Se for usado, deve vir primeiro em um arquivo independente.

18) Quantos gatilhos podem ser aplicados a uma tabela?

Um máximo de 12 gatilhos podem ser aplicados a uma tabela.

19) Qual a importância de SQLCODE e SQLERRM?

SQLCODE retorna o valor do número de erros para o último erro encontrado, enquanto SQLERRM retorna a mensagem para o último erro.

20) Se um cursor estiver aberto, como podemos encontrar em um Bloco PL SQL?

a variável de status do cursor% ISOPEN pode ser usada.

21) Mostre as duas exceções de cursor PL / SQL.

Cursor_Already_Open

Invaid_cursor

22) Quais operadoras lidam com NULL?

NVL converte NULL em outro valor especificado.

var: = NVL (var2, 'Hi');

IS NULL e IS NOT NULL podem ser usados ​​para verificar especificamente se o valor de uma variável é NULL ou não.

23) O SQL * Plus também possui um mecanismo PL / SQL?

Não, o SQL * Plus não tem um PL / SQL Engine embutido nele. Assim, todo o código PL / SQL é enviado diretamente para o mecanismo de banco de dados. É muito mais eficiente, pois cada instrução não é removida individualmente.

24) Quais pacotes estão disponíveis para desenvolvedores PL SQL?

DBMS_ série de pacotes, como DBMS_PIPE, DBMS_DDL, DBMS_LOCK, DBMS_ALERT, DBMS_OUTPUT, DBMS_JOB, DBMS_UTILITY, DBMS_SQL, DBMS_TRANSACTION, UTL_FILE.

25) Explique 3 partes básicas de um gatilho.

  • Uma declaração ou evento desencadeante.
  • Uma restrição
  • Uma ação

26) Quais são as funções do personagem?

INITCAP, UPPER, SUBSTR, LOWER e LENGTH são funções de caracteres. As funções de grupo fornecem resultados com base em grupos de linhas, ao contrário de linhas individuais. Eles são MAX, MIN, AVG, COUNT e SUM.

27) Explique TTITLE e BTITLE.

Comandos TTITLE e BTITLE que controlam cabeçalhos e rodapés de relatórios.

28) Mostre os atributos do cursor do PL / SQL.

% ISOPEN: Verifica se o cursor está aberto ou não

% ROWCOUNT: o número de linhas que são atualizadas, excluídas ou buscadas.

% FOUND: verifica se o cursor buscou alguma linha. É verdade se as linhas forem buscadas

% NOT FOUND: Verifica se o cursor buscou alguma linha. É verdadeiro se as linhas não forem buscadas.

29) O que é um Intersect?

Intersect é o produto de duas tabelas e lista apenas as linhas correspondentes.

30) O que são sequências?

As sequências são usadas para gerar números de sequência sem sobrecarga de bloqueio. Sua desvantagem é que o número de sequência será perdido se a transação for revertida.

31) Como você referenciaria os valores da coluna ANTES e DEPOIS de inserir e excluir acionadores?

Usando a palavra-chave "new.column name", os gatilhos podem referenciar valores de coluna por nova coleção. Usando a palavra-chave "nome da coluna antiga", eles podem referenciar valores de coluna por coleção antiga.

32) Quais são os usos das palavras-chave SYSDATE e USER?

SYSDATE refere-se à data do sistema do servidor atual. É uma pseudo coluna. USER também é uma pseudocoluna, mas se refere ao usuário atual conectado à sessão. Eles são usados ​​para monitorar as mudanças que acontecem na tabela.

33) Como o ROWID ajuda a executar uma consulta mais rapidamente?

ROWID é o endereço lógico de uma linha, não é uma coluna física. Ele é composto pelo número do bloco de dados, número do arquivo e número da linha no bloco de dados. Portanto, o tempo de E / S é minimizado ao recuperar a linha e resulta em uma consulta mais rápida.

34) Para que são usados ​​os links de banco de dados?

Links de banco de dados são criados para formar a comunicação entre vários bancos de dados ou ambientes diferentes, como teste, desenvolvimento e produção. Os links do banco de dados são somente leitura para acessar outras informações também.

35) O que buscar um cursor faz?

Ao buscar um cursor, lê-se Conjunto de resultados linha por linha.

36) O que fechar um cursor faz?

Fechar um cursor limpa a área SQL privada, bem como desaloca a memória

37) Explique os usos do Arquivo de Controle.

É um arquivo binário. Ele registra a estrutura do banco de dados. Inclui a localização de vários arquivos de log, nomes e carimbos de data / hora. Eles podem ser armazenados em locais diferentes para ajudar na recuperação de informações se um arquivo for corrompido.

38) Explique a consistência

A consistência mostra que os dados não serão refletidos para outros usuários até que os dados sejam confirmados, para que a consistência seja mantida.

39) Diferem entre blocos anônimos e subprogramas.

Os blocos anônimos são blocos sem nome que não são armazenados em nenhum lugar enquanto os subprogramas são compilados e armazenados no banco de dados. Eles são compilados em tempo de execução.

40) Diferem entre DECODE e CASE.

As instruções DECODE e CASE são muito semelhantes, mas CASE é uma versão estendida de DECODE. DECODE não permite declarações de tomada de decisão em seu lugar.

selecione decodificar (totalsal = 12000, 'alto', 10000, 'médio') como decode_tesr de smp onde smpno em (10,12,14,16);

Esta declaração retorna um erro.

CASE é usado diretamente em PL SQL, mas DECODE é usado apenas em PL SQL por meio de SQL.

41) Explique a transação autônoma.

Uma transação autônoma é uma transação independente da transação principal ou principal. Não é aninhado se for iniciado por outra transação.

Existem várias situações para usar transações autônomas, como registro e auditoria de eventos.

42) Diferencie entre SGA e PGA.

SGA significa System Global Area, enquanto PGA significa Program ou Process Global Area. O PGA recebe apenas 10% do tamanho da RAM, mas o SGA recebe 40% do tamanho da RAM.

43) Qual é a localização de Pre_defined_functions.

Eles são armazenados no pacote padrão chamado "Funções, procedimentos e pacotes"

44) Explique o polimorfismo em PL SQL.

O polimorfismo é uma característica da OOP. É a capacidade de criar uma variável, um objeto ou função com múltiplas formas. PL / SQL suporta polimorfismo na forma de sobrecarga de unidade de programa dentro de uma função-membro ou pacote ... Lógica inequívoca deve ser evitada enquanto a sobrecarga está sendo feita.

45) Quais são os usos do MERGE?

MERGE é usado para combinar várias instruções DML em uma.

Sintaxe: mesclar em tablename

usando (consulta)

ligado (condição de junção)

quando não correspondido então

comando [inserir / atualizar / excluir]

quando combinado então

comando [inserir / atualizar / excluir]

46) 2 consultas podem ser executadas simultaneamente em um sistema de banco de dados distribuído?

Sim, eles podem ser executados simultaneamente. Uma consulta é sempre independente da segunda consulta em um sistema de banco de dados distribuído com base no 2 phase commit.

47) Explique Raise_application_error.

É um procedimento do pacote DBMS_STANDARD que permite a emissão de mensagens de erro definidas pelo usuário a partir do acionador do banco de dados ou subprograma armazenado.

48) Qual é o parâmetro out usado para o caso, embora a instrução de retorno também possa ser usada em pl / sql?

Os parâmetros de saída permitem mais de um valor no programa de chamada. O parâmetro de saída não é recomendado em funções. Os procedimentos podem ser usados ​​em vez de funções se vários valores forem necessários. Assim, esses procedimentos são usados ​​para executar os parâmetros de saída.

49) Como você converteria a data para o formato juliano?

Podemos usar a string de formato J:

SQL> selecione to_char (to_date ('29 -Mar-2013 ',' dd-mon-aaaa '),' J ') como juliano de dual;

JULIAN

50) Explique SPOOL

O comando Spool pode imprimir a saída de instruções sql em um arquivo.

spool / tmp / sql_outtxt

selecione smp_name, smp_id de smp onde dept = 'accounts';

carretel fora;

51) Mencione em que pacote PL / SQL consiste?

Um pacote PL / SQL consiste em

  • Tabela PL / SQL e instruções TYPE de registro
  • Procedimentos e Funções
  • Cursores
  • Variáveis ​​(tabelas, escalares, registros, etc.) e constantes
  • Nomes de exceção e pragmas para relacionar um número de erro com uma exceção
  • Cursores

52) Mencione quais são os benefícios dos pacotes PL / SQL?

Ele oferece vários benefícios, como

  • Oculto forçado de informações: oferece a liberdade de escolher se deseja manter os dados privados ou públicos
  • Design de cima para baixo: você pode projetar a interface para o código oculto no pacote antes de realmente implementar os próprios módulos
  • Persistência do objeto: objetos declarados em uma especificação de pacote se comportam como dados globais para todos os objetos PL / SQL na aplicação. Você pode modificar o pacote em um módulo e, em seguida, referenciar essas mudanças para outro módulo
  • Design orientado a objetos: o pacote dá aos desenvolvedores um controle forte sobre como os módulos e estruturas de dados dentro do pacote podem ser usados
  • Garantindo a integridade da transação: fornece um nível de integridade da transação
  • Melhoria de desempenho: O RDBMS rastreia automaticamente a validade de todos os objetos de programa armazenados no banco de dados e melhora o desempenho dos pacotes.

53) Mencione quais são os diferentes métodos para rastrear o código PL / SQL?

Rastrear o código é uma técnica crucial para medir o desempenho do código durante o tempo de execução. Diferentes métodos de rastreamento incluem

  • DBMS_APPLICATION_INFO
  • DBMS_TRACE
  • DBMS_SESSION e DBMS_MONITOR
  • utilitários trcsess e tkproof

54) Mencione o que o criador de perfil hierárquico faz?

O criador de perfil hierárquico poderia traçar o perfil das chamadas feitas em PL / SQL, além de preencher a lacuna entre as lacunas e as expectativas de rastreamento de desempenho. As eficiências do criador de perfil hierárquico incluem

  • Relatórios distintos para consumo de tempo SQL e PL / SQL
  • Relatórios contam de chamadas de subprogramas distintas feitas no PL / SQL e o tempo gasto com cada chamada de subprograma
  • Vários relatórios analíticos interativos em formato HTML usando o utilitário de linha de comando
  • Mais eficaz do que o gerador de perfis convencional e outros utilitários de rastreamento

55) Mencione o que a mensagem PLV permite que você faça?

A mensagem PLV permite que você

  • Atribuir mensagem de texto individual para linha especificada na tabela PL / SQL
  • Ele recupera o texto da mensagem por número
  • Ele substitui automaticamente suas próprias mensagens por mensagens de erro padrão do Oracle com alternância restrita
  • Carregar em lote números de mensagem e texto de uma tabela de banco de dados diretamente PLV msg tabela PL / SQL

56) Mencione o que o pacote PLV (PL / Vision) oferece?

  • Valor de substituição nulo
  • Conjunto de rotinas de asserção
  • Utilitários diversos
  • Conjunto de constantes usadas em toda a visão PL
  • Tipos de dados predefinidos
  • 57) Mencione para que serve PLVprs e PLVprsps?
  • PLVprs: é uma extensão para análise de string para PL / SQL e é o nível mais baixo de funcionalidade de análise de string
  • PLVprsps: é o pacote de nível mais alto para analisar o código-fonte PL / SQL em atômicas separadas. Ele depende de outros pacotes de análise para realizar o trabalho.

58) Explique como você pode copiar um arquivo para o conteúdo do arquivo e um arquivo para a tabela PL / SQL com antecedência PL / SQL?

Com uma única chamada de programa - " procedimento fcopy", você pode copiar o conteúdo completo de um arquivo para outro arquivo. Ao copiar o conteúdo de um arquivo diretamente para uma tabela PL / SQL, você pode usar o programa " file2pstab" .

59) Explique como o tratamento de exceções é feito com antecedência PL / SQL?

Para tratamento de exceções, o PL / SQl fornece um plug-in efetivo PLVexc. PLVexc oferece suporte a quatro ações de tratamento de exceção diferentes.

  • Continue processando
  • Grave e continue
  • Parar o processamento
  • Grave e interrompa o processamento

Para aquelas exceções que ocorrem novamente, você pode usar a instrução RAISE.

60) Mencione qual problema alguém pode enfrentar ao gravar informações de log em uma tabela de banco de dados em PL / SQL?

Ao gravar informações de log em uma tabela de banco de dados, o problema que você enfrenta é que as informações só estão disponíveis quando as novas linhas são confirmadas no banco de dados. Isso pode ser um problema, pois o PLVlog geralmente é implantado para rastrear erros e, em muitos casos, a transação atual falha ou, de outra forma, precisa de uma reversão.

61) Mencione qual é a função que é usada para transferir um log de tabela PL / SQL para uma tabela de banco de dados?

Para transferir um log de tabela PL / SQL, uma função de tabela de log de banco de dados "PROCEDURE ps2db" é usada.

62) Quando você tem que usar um ponto de salvamento padrão "rollback para" do PLVlog?

O ponto de salvamento padrão "rollback para" de PLVlog é usado quando os usuários ativaram a atividade de rollback e não forneceu um ponto de salvamento alternativo na chamada para put_line. O ponto de salvamento padrão é inicializado com a constante c none.

63) Por que o PLVtab é considerado a forma mais fácil de acessar a tabela PL / SQL?

As tabelas PL / SQL são as mais próximas dos arrays em PL / SQL e, para acessar essa tabela, você deve primeiro declarar um tipo de tabela e, em seguida, declarar a própria tabela PL / SQL. Mas, ao usar o PLVtab, você pode evitar a definição de seu próprio tipo de tabela PL / SQL e facilitar o acesso à tabela de dados PL / SQL.

64) Mencione o que o PLVtab permite que você faça ao mostrar o conteúdo das tabelas PL / SQL?

O PLVtab permite que você faça o seguinte ao mostrar o conteúdo das tabelas PL / SQL

  • Exibir ou suprimir um cabeçalho para a tabela
  • Exibir ou suprimir os números das linhas para os valores da tabela
  • Mostra um prefixo antes de cada linha da tabela

65) Explique como você pode salvar ou colocar sua mensagem em uma tabela?

Para salvar a mensagem em uma tabela, você pode fazer isso de duas maneiras

  • Carregue mensagens individuais com chamadas para o procedimento add_text
  • Carregue conjuntos de mensagens de uma tabela de banco de dados com o procedimento load_from_dbms

66) Mencione qual é o uso da função "module procedure" no PL / SQL?

O "procedimento de módulo" permite converter todas as linhas de código em uma unidade de programa definida com uma chamada de procedimento. Existem três argumentos para os módulos

  • module_in
  • cor_in
  • Last_module_in

67) Mencionar o que o PLVcmt e o PLVrb fazem no PL / SQL?

PL / Vision oferece dois pacotes que ajudam a gerenciar o processamento de transações em aplicativos PL / SQL. É PLVcmt e PLVrb.

  • PLVcmt: o pacote PLVcmt envolve lógica e complexidade para lidar com o processamento de confirmação
  • PLVrb: fornece uma interface programática para reverter a atividade em PL / SQL