SóProvas



Questões de PL-SQL


ID
70315
Banca
FCC
Órgão
TRT - 3ª Região (MG)
Ano
2009
Provas
Disciplina
Banco de Dados
Assuntos

Para passar resultados de query entre subprogramas PL/SQL, ou seja, quando um subprograma executa uma query e o resultado será processado por outro subpro- grama, utiliza-se uma

Alternativas
Comentários
  • Algumas vezes poderemos querer imprimir o valor de uma variável local do PL/SQL. (..) definir uma variável atada (bind variable), que é o único tipo que pode ser impresso com um comando print. (..) devem ser prefixadas com um dois pontos em instruções PL/SQL, tal como :new [1]

    Uma variável do tipo LOB armazena um locator, que por sua vez aponta para um objeto binário grande (corpo do texto do laudo ou anexo fotográfico ou vídeo ou som), armazenado dentro do mesmo banco de dados. [2]

    [1] http://www.fundao.wiki.br/articles.asp?cod=31

    [2] Um Sistema de Informação Multimídia para Laudos Periciais

     

  • O uso de instruções SQL pela maioria das linguagens de programação e sistemas gerenciadores de banco de dados pode ser parametrizado de forma eficiente e segura, através das bind variables, ou variáveis de ligação, podendo ser utilizadas nos comandos SELECT, UPDATE, DELETE e INSERT. Variáveis de ligação funcionam como parâmetros em instruções SQLpossibilitando a atribuição de valores dinâmicos. Na execução de instruções SQL é comum usar parâmetros para selecionar ou atualizar dados através das cláusulas where, values ou set.
  • Uma variável do tipo cursor é como um ponteiro nas linguagens C e Pascal, ela guarda a posição na memória (endereço) de um objeto ao invés de guardar o próprio objeto. Portanto quando você declara uma variável do tipo cursor você está criando um ponteiro e não um objeto.

    O principal benefício da variável do tipo cursor é que ela provê um mecanismo para se passar resultados de consultas entre diferentes programas PL/SQL, ou ainda entre programa PL/SQL cliente e programa servidor. Em um ambiente cliente/servidor, por exemplo, um programa do lado cliente poderia abrir a variável do tipo cursor e começar a extrair seus dados, e então passar essa variável como argumento a uma procedure armazenada no servidor. Este programa poderia então continuar a extrair seus dados e passar a variável de volta ao cliente para que este feche o curso.
  • Variáveis do tipo cursor são verdadeiras variáveis PL/SQL, você pode associar novos valores a ela e passa-la como argumento a subprogramas. - http://www.oocities.org/gsaudino/dcto/cursorv.html
    A variável de ligação (bind variable) funciona como um parâmetro da instrução SQL, sendo um elo de ligação entre o servidor de banco de dados e o ambiente de programação ou interface de acesso que o utiliza, para a passagem de valores dinâmicos a cada execução do SQL




  • c-

    cursors- estruturas p/ selecionar varias linhas de resultados atraves de comandos SELECT, algo impossivel pelo select....into. Usar cursores impede erros ora-01403:no data found & ora-01422: exact fetch returns more than requested number of rows.


ID
72061
Banca
CESGRANRIO
Órgão
IBGE
Ano
2010
Provas
Disciplina
Banco de Dados
Assuntos

Se uma consulta PL/SQL no Oracle retornar mais do que uma tupla, então, para receber o retorno da consulta, será necessário usar um

Alternativas
Comentários
  • A instrução SELECT no PL/SQL funciona apenas se o resultado da consulta contém uma única tupla. Se a consulta retorna mais do que uma tupla, você precisa usar um cursor.
  •  E o cursor implícito com o uso do for?

  • Os cursores em PL/SQL podem ser explícitos e implícitos. O PL/SQL declara um cursor implicitamente para toda instrução DML (UPDATE, INSERT, DELETE, SELECT...INTO), incluindo consultas que retornam apenas uma linha. As consultas que retornam mais de uma linha deverão ser declaradas explicitamente.

    FONTE: http://www.devmedia.com.br/articles/viewcomp.asp?comp=13041

  • b-

    Cursor sao estruturas que acessamaa area da memoria do sql, geralmente para permitir retorno de mais de uma linha. Isso evita erros ORA-01403: no data found e ORA-01422: exact fetch returns more than requested number of rows. Os cursores podem ser explicitos explicitos (open, fetch...into, close) ou explicitos(ISOPEN, NOTFOUND, FOUND, %ROWCOUNT).


ID
79270
Banca
FCC
Órgão
TRT - 18ª Região (GO)
Ano
2008
Provas
Disciplina
Banco de Dados
Assuntos

A estrutura de controle Iteração pode ser utilizada em PL/SQL com os comandos

Alternativas
Comentários
  •  As principais estruturas de loop do PL/SQL são:

    1 - LOOP

    LOOP

    <loop_body> /* Uma lista de instruções. */

    EXIT WHEN <condition>;

    END LOOP;


    2 - WHILE-LOOP

    WHILE <condition> LOOP

    <loop_body>

    END LOOP;


    3 - FOR-LOOP

    FOR <var> IN <start>..<finish> LOOP

    <loop_body>

    END LOOP;

    [1] http://www.fundao.wiki.br/articles.asp?cod=31


ID
113659
Banca
FCC
Órgão
DPE-SP
Ano
2010
Provas
Disciplina
Banco de Dados
Assuntos

No PL/SQL Oracle, o comando PROJECTION serve para

Alternativas
Comentários
  • Projection vem de projeção, que seriam as colunas projetadas em um determinado SQL. 
    Exemplo: SELECT NomeFuncionario FROM Funcionario
    Neste caso a coluna "NomeFunionario" seria a projeção.
  • Acredito que o comando PROJECTION tem sua base ba álgebra relacional, onde a projeção é exatamente a "escolha de colunas de uma tabela".

    >> http://www.devmedia.com.br/post-2663-Algebra-Relacional-Parte-I.html

  • Projeção, em algebra relacional, e possivelmente em PL/SQL, é o subconjunto de um conjunto de colunas possíveis.

  • Projetion é para Algebra relacional. O comando PL/SQL equivalente ao Projection (que seleciona colunas) é o SELECT. A questão merecia recurso.

    Bons estudos!

ID
118648
Banca
FCC
Órgão
TRT - 20ª REGIÃO (SE)
Ano
2010
Provas
Disciplina
Banco de Dados
Assuntos

A sigla PL/SQL significa uma linguagem

Alternativas
Comentários

ID
118651
Banca
FCC
Órgão
TRT - 20ª REGIÃO (SE)
Ano
2010
Provas
Disciplina
Banco de Dados
Assuntos

No PL/SQL, o comando SELECTION serve para

Alternativas

ID
118855
Banca
FCC
Órgão
TRT - 20ª REGIÃO (SE)
Ano
2010
Provas
Disciplina
Banco de Dados
Assuntos

A principal diferença na utilização de comandos SQL em blocos PL/SQL está na utilização do comando SELECT, com uma cláusula para colocar o resultado da consulta em variáveis. Tal cláusula é

Alternativas
Comentários
  • A sintaxe do comando SELECT utilizando PL/SQL está abaixo:

     SELECT [hint][DISTINCT] select_list

       INTO {variable1, variable2... | record_name}
       FROM table_list
       [WHERE conditions]
       [GROUP BY group_by_list]
       [HAVING search_conditions]
       [ORDER BY order_list [ASC | DESC] ]
       [FOR UPDATE for_update_options]
     
    Podemos perceber nesta que é possível a atribuição de valores em variáveis através da cláusula INTO após definir as colunas da seleção.
     
    [1] http://ss64.com/oraplsql/select.html
  • a-

    select into é uma estrutura pl/sql quando se deseja usar variaveis para representar campos da tabela.ex.:


ID
118858
Banca
FCC
Órgão
TRT - 20ª REGIÃO (SE)
Ano
2010
Provas
Disciplina
Banco de Dados
Assuntos

Em relação aos cursores do PL/SQL, é correto afirmar:

Alternativas
Comentários
  • Em alguns casos necessitamos de espaços de armazenamento mais complexos que as variáveis, como uma matriz de informação resultada de uma consulta SQL, neste case se faz necessário o uso de cursores.Os cursores em PL/SQL podem ser explícitos e implícitos. O PL/SQL declara um cursor implicitamente para toda instrução DML (UPDATE, INSERT, DELETE, SELECT...INTO), incluindo consultas que retornam apenas uma linha. As consultas que retornam mais de uma linha deverão ser declaradas explicitamente.Cursores explícitos são indicados quando é necessário um controle no processamento do mesmo. http://www.devmedia.com.br/articles/viewcomp.asp?comp=13041
  • (B) Um cursor explícito está sempre associado a uma instrução SQL. Correção: Implícito, pois explícito é quando você dá um nome. Exemplo:
     
    CURSOR c_customers is
    SELECT * from CUSTOMERS;
     
    (C) A instrução OPEN abre um cursor implícito, mas o retorno dos dados só pode ser feito pela instrução FETCH. Correção: A função OPEN abre qualquer cursor.
     
    (D) Se um cursor explícito for aberto duas vezes é função do ORACLE fechar um deles. Correção: É função do CLOSE e não do Oracle fechar um deles.
     
    (E) Embora não seja possível utilizar instruções OPEN, FETCH e CLOSE para controlar o cursor explícito, é possível usar atributos de cursor para obter informações sobre a instrução SQL executada mais recentemente. Correção: Tais instruções controlam sim, um cursos explícito.

ID
118861
Banca
FCC
Órgão
TRT - 20ª REGIÃO (SE)
Ano
2010
Provas
Disciplina
Banco de Dados
Assuntos

No PL/SQL, é um laço utilizado quando não se tem certeza de quantas vezes o ciclo deve ocorrer e não se quer executar o laço no mínimo uma vez:

Alternativas
Comentários
  • Oracle / PLSQL: WHILE LOOP

    This Oracle tutorial explains how to use the WHILE LOOP in Oracle with syntax and examples.

    Description

    In Oracle, you use a WHILE LOOP when you are not sure how many times you will execute the loop body and the loop body may not execute even once.

  • b-

    While - associa uma condição à execução das iterações, sendo esta condição avaliada  cada iteração. Nov interação so é iniciada se condição for verdade.


ID
130099
Banca
CESPE / CEBRASPE
Órgão
SERPRO
Ano
2008
Provas
Disciplina
Banco de Dados
Assuntos

Ainda com relação às linguagens, julgue os próximos itens.

PL/SQL e PL/Pgsql não são linguagens procedurais embarcadas.

Alternativas
Comentários
  • SQL Embarcada é um método que combina a computação das linguagens de programação com a capacidade de manipulação de dados da linguagem SQL. Fonte: en.wikipedia.org/wiki/Embedded_SQL

  • PL/SQL - ORACLE
    PL/pgSQL - SQL Procedural Language - PostgreSQL - POSTGRE
  • Apenas complementando:

    Sistemas que NAO suportam SQL embarcado:

    Microsoft SQL Server[edit]

    Embedded SQL for C has been deprecated as of Microsoft SQL Server 2008 although earlier versions of the product support it.[8]

    MySQL[edit]

    MySQL does not support Embedded SQL.[9]


ID
148024
Banca
FCC
Órgão
TRT - 16ª REGIÃO (MA)
Ano
2009
Provas
Disciplina
Banco de Dados
Assuntos

Os programas PL/SQL são constituídos por blocos que executam operações lógicas e cada bloco tem três partes que definem as:

I. declarações de variáveis e itens.

II. instruções procedurais e SQL.

III. instruções de tratamento de erros.

No bloco é obrigatória a presença da seção que se afirma em

Alternativas
Comentários
  •  A unidade básica em PL/SQL é um bloco. Todos os programas em PL/SQL são compostos por blocos, que podem estar localizados uns dentro dos outros. Geralmente, cada bloco efetua uma ação lógica no programa. Um bloco tem basicamente a seguinte estrutura:


    DECLARE
    Seção para declaração de variáveis,tipos e subprogramas locais.
    BEGIN
    Seção Executável, nesta secção ficam as instruções procedimentais e SQL. Esta é a única secção do bloco que é indispensável e obrigatória.
    EXCEPTION
    Seção onde ficam as instruções de tratamento de erro.
    END

  • Apenas o item II é obrigatório em todos os blocos.

ID
148042
Banca
FCC
Órgão
TRT - 16ª REGIÃO (MA)
Ano
2009
Provas
Disciplina
Banco de Dados
Assuntos

Nas estruturas de controle de iteração dos programas PL/SQL são utilizadas apenas as instruções

Alternativas
Comentários
  • LOOP é dado pela sintaxe:


    LOOP
    <lista de declarações>
    END LOOP

    Para não rodar até o final dos tempos, pelo menos uma declaração dessa lista de declarações deve ser EXIT.

    Exemplo:

    LOOP
    insert into T1 values(1,nome,idade);
    i := i+1;
    EXIT WHEN i > 100;
    END LOOP
  • IF e CASE - são estruturas condicionais.
    GOTO - é estrutura de salto.
    NULL - não realiza nenhuma operação.

    Restando somente o LOOP e EXIT que são estruturas de controle de um bloco de comandos.




ID
148045
Banca
FCC
Órgão
TRT - 16ª REGIÃO (MA)
Ano
2009
Provas
Disciplina
Banco de Dados
Assuntos

No tipo Escalares, NÃO é uma das quatro famílias de tipos de dados predefinidos do PL/SQL:

Alternativas
Comentários
  • As 4 famílias de tipos de dados predefinidos do PL/SQL são:

    1 - Família numérica: BYNARY_INTEGER DEC, DECIMAL, DOUBLE PRECISION, FLOAT, INT INTEGER, NATURAL, NATURAL N, NUMBER, NUMERIC, PLS INTEGER, POSITIVE, POSITIVEN, REAL, SIGNTYPE, SMALLINT 

    2 - Família de caracteres: CHAR, CHARACTER LONG, NCHAR, NVARCHAR2, STRING, VARCHAR, VARCHAR2

    3 - Família de dataintervalos: DATE, INTERVAL DAY TO SECOND, INTERVAL YEAR TO MONTH, TIMESTAMP, TIMESTAMP WITH TIME ZONE, TIMESTAMP WITH LOCAL TIME ZONE

    4 - Família de booleana: BOOLEAN

     

    PS: Na referência seguinte temos mais 3 famílias não citadas acima: rowid, confiança e raw

     [1] http://imasters.uol.com.br/artigo/1713

  • Tipos de dados PL/SQL

    Como podemos perceber, tanto variáveis, quanto constantes devem ter um tipo de dado válido que possa especificar o seu formato de armazenagem, restrições e qual o intervalo de valores é permitido. Para não nos perdermos com relação aos diferentes tipos de dados, segue na Tabela 1 a apresentação das categorias e suas descrições.

    Categoria

    Descrição

    Escalar

    Valores individuais sem componentes internos, assim como é o caso do NUMBER, DATE ou BOOLEAN.

    Large Object (LOB)

    São ponteiros para objetos maiores armazenados separadamente de outros tipos de dados, assim como os tipos TEXT, GRAFIC IMAGE, VIDEO CLIPS.

    Composto

    São tipos de dados que apresentam componentes internos e que podem ser acessados separadamente. Exemplos dessa utilização: Records e collections.

    Referência

    Ponteiros para outros dados.

    Tabela 1. Definição das categorias de tipos de dados e suas descrições.

    *Os tipos Referência e Compostos não serão abordados neste artigo.

    Já os tipos de dados escalares são definidos nas seguintes categorias da Tabela 2.

    Tipos de dados

    Descrição

    Numeric

    Valores numéricos em que as operações aritméticas são realizadas.

    Character

    Valores alfanuméricos que representam caracteres simples ou strings de caracteres.

    Boolean

    Valores lógicos nos quais as operações lógicas são realizadas.

    Datetime

    Datas e horas basicamente.

    Tabela 2. Definição dos tipos de dados escalares.



    Leia mais em: PL SQL: Tipos de dados Escalar e LOB http://www.devmedia.com.br/pl-sql-tipos-de-dados-escalar-e-lob/29824#ixzz38X9EHiKU


ID
148336
Banca
FCC
Órgão
TRT - 16ª REGIÃO (MA)
Ano
2009
Provas
Disciplina
Banco de Dados
Assuntos

As pseudo colunas SQL: CURRVAL, NIVEL, NEXTVAL, ROWID, e ROWNUM são permitidas em PL/SQL somente no comando

Alternativas
Comentários
  • CURRVAL : Valor corrente de uma seqüência armazenada no banco de dados.
    NEXTVAL : Valor do próximo valor da seqüência armazenada no banco de dados.
    LEVEL : Nível na estrutura da árvore em bancos de dados.
    ROWID : Coluna que especifica a localização da linha (definido pelo Oracle).
    ROWNUM : Número da linha selecionada em uma tabela. Não é afetada pela cláusula ORDER BY.

  • Complementando o que sao pseudo colunas:

    pseudocolumn behaves like a table column, but is not actually stored in the table. You CAN select from pseudocolumns, but you cannot insert, update, or delete their values. A pseudocolumn is also similar to a function without arguments

    fonte: http://docs.oracle.com/cd/B19306_01/server.102/b14200/pseudocolumns.htm

  • c-

    A pseudocolumn behaves like a table column, but is not actually stored in the table. You can select from pseudocolumns, but you cannot insert, update, or delete their values.

    https://docs.oracle.com/cd/A84870_01/doc/server.816/a76989/ch26.htm


ID
149944
Banca
CESPE / CEBRASPE
Órgão
ANAC
Ano
2009
Provas
Disciplina
Banco de Dados
Assuntos

A respeito de SQL e PL/SQL, julgue os itens a seguir.

A estrutura básica de um bloco PL/SQL é composta por quatro seções: DECLARE, BEGIN, EXCEPTION e END. As seções DECLARE, BEGIN e END são obrigatórias.

Alternativas
Comentários
  •   DECLARE - Seção para declaração de variáveis,tipos e subprogramas locais.
    BEGIN - Seção Executável, nesta seção ficam as instruções procedurais e SQL. Esta é a única seção do bloco que é indispensável e obrigatória.
    EXCEPTION - Seção/Setor onde ficam as instruções de tratamento de erro.
    END

  • A estrutura PL/SQL é composta por 3 seções e não por 4.

    DECLARE
       (obrigatória)
    BEGIN
       (obrigatória)
    EXCEPTION
       (opcional)
    END;

  • Estrutura de bloco PL/SQL

     

    DECLARE

    /* Seção declarativa – variáveis, tipos, cursores e subprogramas locais */

    BEGIN

    /* Seção executável - instruções SQL e procedurais entram aqui. Essa é a principal sessão do bloco PL/SQL, e é a única obrigatória. */

    EXCEPTION

    /* Seção de tratamento de exceções – instruções de tratamento de erros entram aqui. */

    END;

  • PARTES DO PL/SQL:

    DECLARE - Seção declarativa   -  Opcionalcaso não use VARIAVEIS ou CONSTANTES

    BEGIN - Seção executavel  -  Obrigatória

    EXCEPTION - Tratamento de exceções - Opcional

    END; -  Opcional

    fonte:material do Dominando TI


ID
151897
Banca
FCC
Órgão
TRE-PI
Ano
2009
Provas
Disciplina
Banco de Dados
Assuntos

No PL SQL, uma procedure pode ser chamada a partir de uma

I. aplicação.
II. outra procedure.
III. uma query.
IV. trigger.


Está correto o que se afirma em

Alternativas
Comentários
  • Como é possível chamar uma procedure a partir de uma query?
  • Também não concordo com esse gabarito.


    Procedures são subprogramas que têm por objetivo executar uma ação específica. Elas não retornam valores, não sendo, portanto, utilizadas em atribuições a variáveis ou como argumento em um comando SELECT.
     
  • Eu fiquei com dúvida em chamar diretamente pela aplicação.

    Entretanto, sabia que uma stored procedured podia ser chamada por uma aplicação. Logo, concluí, que podia ser chamada dentro de uma aplicação, dentro de uma query. Ex: select verifica_cpf('000.000.000-00')
  • Na documentação da Oracle, informa que uma procedure pode ser chamada das seguintes formas:

    Procedures can be called from many different environments. For example:

         A procedure can be called within the body of another procedure or a trigger.

         A procedure can be interactively called by a user using an Oracle Database tool.

         A procedure can be explicitly called within an application, such as a SQL*Forms or a precompiler application.

         A stored function can be called from a SQL statement in a manner similar to calling a built-in SQL function, such as LENGTH or ROUND.

    Dessa maneira, podemos através de uma declaração SQL chamar uma function que, por sua vez, poderá chamar uma procedure.

    Fonte: http://docs.oracle.com/cd/B19306_01/appdev.102/b14251/adfns_packages.htm#i1007682


ID
153556
Banca
FGV
Órgão
Senado Federal
Ano
2008
Provas
Disciplina
Banco de Dados
Assuntos

Triggers constituem construções especiais em PL/SQL, semelhantes a procedures. Enquanto uma procedure é executada explicitamente via uma procedure call, um trigger é executado implicitamente se um determinado evento acontece, a partir de um dos seguintes comandos:

Alternativas
Comentários
  •  De acordo com a sintaxe simplificado do trigger, como segue, podemos dizer que os eventos que associa o trigger com a tabela são o INSERT, DELETE e UPDATE.

    Sintaxe simplificada:

    CREATE [OR REPLACE] TRIGGER <trigger_name>

        {BEFORE|AFTER} {INSERT|DELETE|UPDATE} ON <table_name>

        [FOR EACH ROW [WHEN (<trigger_condition>)]]

        <trigger_body>

     

    [1] http://www.fundao.wiki.br/articles.asp?cod=31

  • Triggers são eventos disparados em tabelas antes ou depois de determinadas operações, como: INSERT, UPDATE E DELETE

  • É possível criar gatilhos (triggers), cujo disparo pode ocorrer em decorrência da exclusão, modificação ou inserção de um registro em uma tabela do banco de dados.

  • Os gatilhos podem ser DML ou DDL.

    Os DML são executados quando um usuário tentar modificar dados através de um evento de linguagem de manipulação de dados (utilização de INSERT, UPDATE ou DELETE).

    Os DDLs são executados em resposta a diversos eventos de linguagem de definição de dados (como o Transact-SQL CREATE, ALTER ou DROP).

  • Triggers (gatilhos) são objetos que podem disparar uma ação com base na ocorrência de algum tipo de evento no banco de dados. Esses eventos podem ser aqueles realizados pelos comandos DML INSERT, DELETE ou UPDATE.

  • Triggers (gatilhos) são objetos que podem disparar uma ação com base na ocorrência de algum tipo de evento no banco de dados.

    Esses eventos podem ser aqueles realizados pelos comandos DML INSERT, DELETE ou UPDATE.


ID
157036
Banca
CESPE / CEBRASPE
Órgão
TRT - 5ª Região (BA)
Ano
2008
Provas
Disciplina
Banco de Dados
Assuntos

Com relação a qualidade de software, bancos de dados e suas tecnologias, julgue os itens de 37 a 42.

No ORACLE, um trigger é um bloco PL/SQL armazenado e associado a uma tabela, esquema ou banco de dados que pode ser criado com o comando CREATE TRIGGER.

Alternativas
Comentários
  •  Triggers são construções especiais do PL/SQL similares a procedures. Contudo, um procedure é executado explicitamente de um outro bloco via uma chamada de procedimento, enquanto um trigger é executado implicitamente sempre que um evento engatilhado acontece(evento relacionado com uma tabela). A estrutura do trigger é definida como segue:

    CREATE [OR REPLACE] TRIGGER <trigger_name>

        {BEFORE|AFTER} {INSERT|DELETE|UPDATE} ON <table_name>

        [FOR EACH ROW [WHEN (<trigger_condition>)]]

        <trigger_body>

    Sendo que:

    - só pode criar triggers BEFORE e AFTER para tabelas
    - só podem ser especificado até três eventos engatilhados: INSERT OR DELETE OR UPDATE ON...
    - Se FOR EACH ROW for especificado, o trigger é row-level; do contrário, o trigger será statement-level
    - <trigger_body> é um bloco PL/SQL
    - As variáveis especiais NEW e OLD estão disponíveis para fazerem referência às tuplas nova e velha respectivamente

     

    [1] http://www.fundao.wiki.br/articles.asp?cod=31

  • Uma trigger realmente pode estar associada a um esquema ou associada a um banco de dados?
  • Também fiquei com a dúvida de gustavo: "Uma trigger realmente pode estar associada a um esquema ou associada a um banco de dados?". Alguém comenta?

  • A trigger is a named program unit that is stored in the database and fired (executed) in response to a specified event. The specified event is associated with either a table, a view, a schema, or the database, and it is one of the following:

    A database manipulation (DML) statement (DELETE, INSERT, or UPDATE) 
    A database definition (DDL) statement (CREATE, ALTER, or DROP) 
    A database operation (SERVERERROR, LOGON, LOGOFF, STARTUP, or SHUTDOWN) 

    The trigger is said to be defined on the table, view, schema, or database.

    Fonte: https://docs.oracle.com/cd/B28359_01/appdev.111/b28370/triggers.htm


ID
161527
Banca
FCC
Órgão
MPE-RS
Ano
2008
Provas
Disciplina
Banco de Dados
Assuntos

A linguagem PL/SQL é uma estrutura em blocos, compostos basicamente das partes declarativa, executável e manipulação de exceções, as quais são, respectivamente, de uso

Alternativas
Comentários
  •     A linguagem PL/SQL utiliza o conceito de bloco estruturado. Esses blocos são compostos por procedures e funções. Um bloco tem a estrutura básica composta por três partes: DECLARE, BEGIN e EXCEPTION.
        Somente a seção executável (BEGIN) é obrigatória; as outras são opcionais. Entretanto se o bloco usar variáveis ou constantes, todas elas devem ser previamente declaradas na seção DECLARE.
        Na seção EXCEPTION  os erros são tratados. Pode-se criar uma rotina que trate erros, evitando que o sistema fique interrompido.
       Ex:   declare
               cont int: = 0;
               begin
                  for cont in 1..5 loop
                     insert into....
                     values(cont, sysdate...);
                 end loop;
                 end;

ID
161530
Banca
FCC
Órgão
MPE-RS
Ano
2008
Provas
Disciplina
Banco de Dados
Assuntos

Ao tipo de variável simples binary integer utilizado na
PL/SQL são associados os subtipos

Alternativas
Comentários
  • For your convenience, PL/SQL predefines the following BINARY_INTEGER subtypes:

    NATURAL
    NATURALN
    POSITIVE
    POSITIVEN
    SIGNTYPE

    The subtypes NATURAL and POSITIVE let you restrict an integer variable to non-negative or positive values, respectively. NATURALN and POSITIVEN prevent the assigning of nulls to an integer variable. SIGNTYPE lets you restrict an integer variable to the values -1, 0, and 1, which is useful in programming tri-state logic.

    http://download.oracle.com/docs/cd/B19306_01/appdev.102/b14261/datatypes.htm
  • O tipo BINARY_INTEGER tem os seguintes subtipos:

       o  NATURAL e POSITIVE: restringem um inteiro a valores não negativos e positivos respectivamente.

       o  NATURALN e POSITIVEN não permitem valores NULL, deve ser atribuído um valor na declaração.

       o  SIGNTYPE restringem valores inteiros a –1, 0 e 1.


ID
161533
Banca
FCC
Órgão
MPE-RS
Ano
2008
Provas
Disciplina
Banco de Dados
Assuntos

A estrutura de repetição PL/SQL que executa uma seqüência de comandos por um número fixo de vezes, estabelecido na própria estrutura, é implementada pelo comando

Alternativas
Comentários
  •  As principais estruturas de loop do PL/SQL são:

    1 - LOOP
     
    LOOP
     
        <loop_body> /* Uma lista de instruções. */
     
    EXIT WHEN <condition>;
     
    END LOOP;
     
     
    2 - WHILE-LOOP
     
     WHILE <condition> LOOP
     
            <loop_body>
     
    END LOOP;
     
     
    3 - FOR-LOOP
     
    FOR <var> IN <start>..<finish> LOOP
     
            <loop_body>
     
    END LOOP;
     
    Podemos perceber que a única que descreve as iterações na própria declaração é o FOR-LOOP, enquanto o WHILE-LOOP define a condição de término(independente do número de iterações) na sua definição e o LOOP(não sei se poderia falar LOOP-WHEN) não define nem a condição de parada, muito menos as iterações, necessitando de instrução EXIT-WHEN para seu término. 
     
    [1] http://www.fundao.wiki.br/articles.asp?cod=31
  • As estruturas de Repetição disponíveis no PL/SQL são: LOOP (básico), WHile-LOOP e FOR LOOP. Estas estruturas são executadas repetidas vezes até que um critério seja alcançado, caso nenhum critério for informado ou este critério for inválido o bloco entrará em uma execução infinita, podendo acarretar em problemas como o travamento do equipamento que estiver executando o código.

     

    O Loop é a estrutura de repetição mais simples entre as três estruturas disponíveis no PL/SQL. Com o uso desta estrutura primeiro um trecho de código é executado e só então a condição de saída é testada. Assim o código será executado ao menos uma vez, mesmo que a condição de saída seja atingida já na primeira execução.

     

    Estrutura WHILE. Esta estrutura de repetição realiza um teste antes de iniciar a execução de um trecho de código, ou seja, o código será executado até que a condição testada seja falsa.

     

    Estrutura FOR. Quando existir a necessidade de executar um trecho de código por determinadas vezes usa-se a estrutura FOR, ou seja, quando o número de iterações é conhecido.


ID
164674
Banca
FGV
Órgão
BADESC
Ano
2010
Provas
Disciplina
Banco de Dados
Assuntos

A PL/SQL é uma linguagem procedural que estende a linguagem padrão SQL e sua unidade básica é um bloco.

A seção utilizada para declaração de variáveis, tipos e subprogramas locais de um bloco PL/SQL é definida pela palavra reservada:

Alternativas
Comentários
  •  Basta lembrar da estrutura básica de uma instrução PL/SQL

    DECLARE

        /* Seção declarativa: variáveis, tipos e subprogramas locais. */

    BEGIN

        /* Seção Executável: aqui vão instruções procedurais e SQL. */

        /* Esta é a única seção do bloco que é indispensável. */

    EXCEPTION

        /* Seção de tratamento de exceção: aqui vão instruções de tratamento de erro. */

    END;

     

    [1] http://www.fundao.wiki.br/articles.asp?cod=31

  • e-

    Variaveis aramzenam valores e podem ser atualizadas a qualquer momento,. Antes de serem, usadas, devem ser delcaradas em DECLARE.


ID
171313
Banca
FGV
Órgão
MEC
Ano
2009
Provas
Disciplina
Banco de Dados
Assuntos

Com relação à linguagem PL/SQL (Procedural Language/ Structured Query Language), uma extensão da linguagem SQL, analise as afirmativas a seguir.

I. Com o uso da PL/SQL armazenado geralmente o desempenho do sistema como um todo tende a aumentar.

II. Como o código PL/SQL pode ser armazenado de forma centralizada em um banco de dados, o tráfego de rede entre o aplicativo e o banco é reduzido.

III. PL/SQL é totalmente compatível com os principais SGBDs do mercado por ser baseada em padrões abertos e livres, facilitando possíveis migrações entre diferentes SGBDs.

Assinale:

Alternativas
Comentários
  • É uma linguagem procedural da Oracle que estende a SQL
    III - FALSO

  • Link interessante para questão:

    http://profissionaloracle.com.br/blogs/antoniodba/2009/07/01/plsql-introducao/
  • b-

    PL/SQL - ORACLE.;

    Vantages do pl/sql:

    - aumento de desempenho- variasinstruções enviadas  juntas. 

    - maior produtividade e adaptacao a ferramentas como forms & reports. 

    - portabilidade. aplicações em pl/sql podem executar em outrad aplicacoes baseadas em ORACLE.

    - integração com RDBMS Oracle: 

    -pode ser exeuctado pelo sql*plus do sql*forms ou qualquer aplicacao PRO*ORACLE (Pro*C, Pro*Pascal etc).


ID
186721
Banca
FCC
Órgão
TRE-RS
Ano
2010
Provas
Disciplina
Banco de Dados
Assuntos

A sigla PL/SQL significa:

Alternativas
Comentários
  • Olá, pessoal!

    Essa questão foi anulada pela banca.

    Bons estudos!
  • Procedural Language/Structured Query Language


ID
186724
Banca
FCC
Órgão
TRE-RS
Ano
2010
Provas
Disciplina
Banco de Dados
Assuntos

No PL/SQL Oracle, o comando SELECT serve para

Alternativas
Comentários
  • Lembro de ter entrado com recurso quando fiz essa prova (aguardo ainda o resultado).

    Se minha vó fosse responder esta questão, ela acertaria. Só que eu, que estudo profundamente o assunto, sempre a erro. A sintaxe do comando SQL é:

    SELECT FROM

    Agora me digam. Select é pra selecionar coluna ou linha?

    Quem filtra a linha é a cláusula WHERE.

  •  Na minha opinião a cláusula SELECT escolhe linhas de uma tabela, por mais que possa ser especificado quais colunas aparecerão na consulta o que é apresentado como "saída" de um SELECT são linhas(tuplas) da tabela.

    @leoh leoh

    A cláusula WHERE pode filtrar as linhas do resultado do SELECT, mas o SELECT continua fazendo a escolha/seleção completa(sem o filtro do WHERE).

  • A questão é, no mínimo controversa. Não sei se o edital especificou alguma bibliografia específica, cabe checar. Se não especificou cabe recurso. Por exemplo, na página 43 do livro "Learning SQL" 2a edição, da O'Reilly há uma tabela clara que diz que a cláusula SELECT define que colunas (e não linhas) virão no resultado da coluna. A clausula WHERE é que define as linhas. Se a questão se refere a todo o comando select, então é dúbia, pois há seleção de linhas e colunas e há duas respostas certas. O livro, na mesma página, diferencia o "statement" SELECT da cláusula SELECT. Não sei se uma boa tradução para "statement" seria comando. Transcrevendo o trecho do livro:

    Query Clauses
    Several components or clauses make up the select statement. While only one of them is mandatory when using MySQL (the select clause), you will usually include at least two or three of the six available clauses.

    Table 3-1 shows the different clauses and their purposes.
     

    Table 3-1. Query clauses


    Clause name              Purpose
    Select                            Determines which columns to include in the query’s result set
    From                              Identifies the tables from which to draw data and how the tables should be joined
    Where                           Filters out unwanted data

     

    Pessoalmente tenho achado essa banca bem estranha (FCC).

     

    Abs, Edu.

  • Me lembro que na prova errei esta questão...

    Também achei a questão um tanto vaga. Minha dúvida foi se SELECT se referia a "SELECT ...FROM...WHERE...ORDER BY...", o que resulta sim em uma relação de linhas do banco, ou se se referia à parte do SELECT unicamente, antes do FROM, WHERE, etc. Sendo essa segunda opção, a alternativa correta poderia tranquilamente ser "escolher colunas em uma tabela".

    Mas, é importante lembrar que para passar em concurso tem que conhecer a matéria e também conhecer a maneira como a banca interpreta esta matéria.
  • Olá, pessoal!

    Essa questão foi anulada pela banca.

    Bons estudos!

ID
205456
Banca
FEPESE
Órgão
SEFAZ-SC
Ano
2010
Provas
Disciplina
Banco de Dados
Assuntos

Sobre a linguagem PL/SQL do Oracle, é correto afirmar:

Alternativas
Comentários
  • a) Um bloco de programa PL/SQL deve conter três seções: declarativa (para declaração de variáveis, por exemplo), executável (comandos) e uma seção de tratamento de exceções.

    ERRADO. Tratamento de exceçoes é opcional
    b) Apresenta comandos condicionais e de repetição, como CASE, IF e REVOKE.

    ERRADO. REVOKE não é comando condicional ou de repetição


    c) É uma linguagem orientada a objetos destinada ao desenvolvimento de aplicações que acessam bancos de dados.

    ERRADO. Não é OO


    d) É uma linguagem declarativa, ou seja, apresenta apenas instruções para consulta e atualização de dados.

    ERRADO. Não é declarativa, como SQL


    e) Um bloco de programa PL/SQL pode conter uma seção declarativa (para declaração de variáveis, por exemplo) e uma seção de tratamento de exceções.

    Correto. PODE. Alem disso, é obrigado ter a sessão executável (comandos)

  •  Apenas complementando o que leoh leoh já falou

    a) já explicado no outro comentário

    b) REVOKE é um comando utilizado para atribuição de privilégios

    c) A PL/SQL é uma linguagem procedural que estende a linguagem SQL

    d) Já explicado na letra c)

    e) já explicado no outro comentário

  • Li esses dias que em um programa PL/SQL tanto a seção declarativa quanto a de tratamento de exceções são opcionais, a única obrigatória é a executável.

    A pegadinha desta questão está na alternativa "a", pois afirma que um programa PL/SQL deve ter as três seções:

    a) Um bloco de programa PL/SQL deve conter três seções: declarativa (para declaração de variáveis, por exemplo), executável (comandos) e uma seção de tratamento de exceções.

    Já na alternativa "e", proferi o seguinte:

    e) Um bloco de programa PL/SQL pode conter uma seção declarativa (para declaração de variáveis, por exemplo) e uma seção de tratamento de exceções.

  • Discordo com nosso amigo que fez o primeiro comentário.
    O erro na alternativa "a" está na palavra deve. Pois, a única seção obrigatórioa é a de Execução. Conforme o site http://www.pl-sql.com.br/

    Um bloco PL/SQL consiste em três seções:
    • A seção de Declaração (opcional).
    • A seção de Execução (obrigatório).
    • A exceção (ou erro) seção de Handling (opcional).

     

     



  • Prezados,

    No PL/SQL temos 3 blocos :

    DECLARE : Bloco opcional que serve para declarar variáveis e cursores definidos pelo usuário
    BEGIN : Bloco obrigatório onde são escritas as instruções
    EXCEPTION : Bloco opcional para tratamento das exceções 

    Portanto a alternativa correta é a letra E



ID
205486
Banca
FEPESE
Órgão
SEFAZ-SC
Ano
2010
Provas
Disciplina
Banco de Dados
Assuntos

Considere as tabelas Itens (codi, descricao, peso), Fornecedores (codf, nome, cidade) e Fornecimentos (codi, codf, quantidade). As chaves primárias das tabelas Itens, Fornecedores e Fornecimentos são, respectivamente, codi, codf e (codi,codf). Os atributos codi e codf em Fornecimentos são chaves estrangeiras para as tabelas Itens e Fornecedores, respectivamente.

A instrução de consulta PL/SQL do Oracle que responde corretamente a consulta "Buscar os nomes dos fornecedores de Florianópolis que fornecem pregos ou parafusos" é:

Alternativas
Comentários
  • ANY (SOME)

    O operador ANY (e o seu sinónimo SOME) permite a uma consulta externa fazer comparações usando < ou > com os elementos de um conjunto devolvido pela subconsulta. Este operador devolve TRUE se uma das linhas do conjunto satisfaz a condição, ou seja, devolve FALSE se nenhuma satisfaz a condição. Este operador pode ser negado com NOT.

    A consulta abaixo devolve os empregados que ganham mais que algum empregado do departamento 30. Isto é o mesmo que afirmar que procuramos os que ganham mais que o salário mínimo do departamento 30.

    select ename, sal, job, deptno
    from emp
    where sal > ANY (select distinct sal
                     from emp
                     where deptno=30);
    
    ENAME      SAL                    JOB       DEPTNO                 
    ---------- ---------------------- --------- ---------------------- 
    KING       5000                   PRESIDENT 10                     
    FORD       3000                   ANALYST   20                     
    SCOTT      3000                   ANALYST   20                     
    JONES      2975                   MANAGER   20                     
    BLAKE      2850                   MANAGER   30                     
    CLARK      2450                   MANAGER   10                     
    ALLEN      1600                   SALESMAN  30                     
    TURNER     1500                   SALESMAN  30                     
    MILLER     1300                   CLERK     10                     
    WARD       1250                   SALESMAN  30                     
    MARTIN     1250                   SALESMAN  30                     
    ADAMS      1100                   CLERK     20                     
    
    12 rows selected
    

  • O erro da D é utilizar codf no lugar de codi

    errado:

      WHERE f.codi = fo.codi
           AND p.codf = fo.codf

    correto:

      WHERE f.codf = fo.codf
           AND p.codi = fo.codi

     

  • Prezados,

    A alternativa B apresentaria erro ao comparar codi=codi  e codf=codf , pois é o mesmo nome do atributo nas duas tabelas
    A alternativa C apresentaria erro pois o union iria trazer os fornecedores de prego e os fornecedores de parafuso de florianópolis , e não os fornecedores de prego ou parafuso em florianópolis 
    A alternativa D apresenta erro pois não existe fo.codi
    A alternativa E está errada pois o exists não está fazendo nenhuma referencia ao select externo, com isso irá trazer resultados errados.

    Portanto a alternativa correta é a letra A


ID
211075
Banca
CESPE / CEBRASPE
Órgão
MPU
Ano
2010
Provas
Disciplina
Banco de Dados
Assuntos

Acerca de SGBD Oracle, Postgres e MySQL, julgue os próximos
itens.

O PostgresSQL é um sistema de gerenciamento de banco de dados objeto-relacional (SGBDOR) de código aberto, tendo como linguagem procedural única de armazenagem o PL/SQL.

Alternativas
Comentários
  • Atualmente existem quatro linguagens procedurais disponíveis na distribuição padrão PostgreSQL: PL/pgSQL, PL/Tcl, PL/Perl  e PL/Python.

  • PL/SQL é a linguagem utilizada no Oracle.

  • Além das citadas pelo Renato Souza, há um certo número de línguagens procedurais que são desenvolvidas e mantidas fora da distribuição PostgreSQL. PL/Java, PL/PHP, PL/Py, PL/R, PL/Ruby, PL/Scheme, PL/sh.

  • Quem não tem acesso:  - -> Errado


ID
211093
Banca
CESPE / CEBRASPE
Órgão
MPU
Ano
2010
Provas
Disciplina
Banco de Dados
Assuntos

A respeito de PL/SQL, julgue os itens a seguir.

Um bloco de programa PL/SQL inclui partes bem distintas, como declaração (declaration) de variáveis e objetos, módulo executável (executable) e módulo de excessões (exception).

Alternativas
Comentários
  • Pl/sql
    Estrutura Básica do PL/SQL
    A unidade básica em PL/SQL é um bloco. Todos os programas em PL/SQL são compostos por blocos, que podem estar localizados uns dentro dos outros. Geralmente, cada bloco efetua uma ação lógica no programa. Um bloco tem basicamente a seguinte estrutura:
    DECLARE
         Seção para declaração de variáveis,tipos e subprogramas locais.
    BEGIN (ÚNICA OBRIGATÓRIA)
         Seção Executável, nesta seção ficam as instruções procedurais e SQL. Esta é a única seção do bloco que é indispensável e obrigatória.
         EXCEPTION
         Seção/Setor onde ficam as instruções de tratamento de erro.
    END (ÚNICA OBRIGATÓRIA)
     

  • A questão está correta pelos motivos detalhados pelo colega, mas excessões? Tá falando sério, Cespe? 

    Pensei que tinha sido o pessoal do Questões de Concurso, mas não. Está escrito desse mesmo jeito na prova... incrível!
  • excessões

    ERRRRRRRRRROU kkkkkk

  • nas seções do blocopl/sql, somente header é obrigatorio.

    declaration e exception sao opcionais

    execution é opcional em especificacoes de tipo e pacotes


ID
222334
Banca
FGV
Órgão
BADESC
Ano
2010
Provas
Disciplina
Banco de Dados
Assuntos

A Procedural Language Structured Query Language (PL/SQL) é um ambiente de programação que reside diretamente no banco de dados.
Os programas PL/SQL podem ser chamados a partir dos ambientes de desenvolvimento Oracle indicados nas afirmativas a seguir.

I. SQL*Plus; Oracle Enterprise Manager; Pré-compiladores Oracle (como Pro*C, Pro*COBOL, etc.)
II. Oracle Call Interface (OCI); Server Manager; Oracle 9i Application Server
III. Java Virtual Machine (JVM)

Assinale:

Alternativas
Comentários
  • Posso chamar um PL/SQL diratemente de uma JVM?
  • Está na documentação oficial da oracle (http://docs.oracle.com/cd/B19306_01/server.102/b14220/sqlplsql.htm#i25622):

    "You can invoke existing PL/SQL programs from Java and invoke Java programs from PL/SQL. This solution protects and leverages your existing investment while opening up the advantages and opportunities of Java-based Internet computing."

    []s

    Wiler
  • The following PL/SQL programs can be called from these Oracle development environments:

    SQL*Plus

    Oracle Grid Control/Oracle Enterprise Manager

    Oracle Precompilers (such as Pro*C, Pro*COBOL, and so on)

    Oracle Call Interface (OCI)

    Server Manager

    Oracle Application Server 10g

    Java Virtual Machine (JVM)

    PL/SQL is well established within Oracle's line of products


ID
222337
Banca
FGV
Órgão
BADESC
Ano
2010
Provas
Disciplina
Banco de Dados
Assuntos

Um banco de dados Oracle ao ser iniciado exige a execução e alocação de vários processos e buffers.
No intuito de suportar a inicialização de um banco de dados é criada uma instância do Oracle que é composta por:

Alternativas
Comentários
  • Um servidor Oracle consiste em um banco de dados Oracle e uma instância de servidor Oracle. Sempre que um banco de dados é iniciado, uma área global do sistema (SGA) é alocada e os processos de segundo plano Oracle são iniciados. A área global do sistema é uma área da memória usada para informações do banco de dados compartilhadas pelos usuários desse banco de dados. A combinação dos processos de segundo plano e dos buffers de memória é denominada instância Oracle.

    http://pt.scribd.com/doc/8733969/Oracle-9I-Introducao-Ao-Oracle9I-SQL-Volume-1-Guia-Do-Aluno
  • Não concordo com o gabarito. A correta deveria ser:
      e) execução de processos em segundo plano e Área Global do Sistema (SGA), não compartilhada por todos os usuários.
    Correto. A SGA não é compartilhada por todos os usuários, mas sim por todos os processos em background (segundo plano).
  • O conhecimento da arquitetura interna do ORACLE é de extrema importância para a compreensão das técnicas de otimização do produto. Basicamente, os seus mecanismos de execução são as estruturas de memória e os processos executados em background. Todas as vezes que um banco é inicializado, uma SGA é alocada e os processos são inicializados. A combinação das estruturas de memória na SGA e dos processos em background é chamada de instância ORACLE. 

    Read more: http://www.linhadecodigo.com.br/artigo/99/a-arquitetura-do-oracle.aspx#ixzz3PnrzwHKC

  • A questao só esqueceu de mencionar q são todos os usuarios da instância, e não do banco. Mas o gabarito está correto. Conforme[1], a SGA é um grupo de estrutura de memoria compartilhada para uma instancia Oracle, compartilhada pelos usuarios da instancia do BD.

    Alguém pode ainda fazer uma confusão com a PGA. Esta representa as seções dos usuarios, q precisa de uma memoria no servidor, não sendo compartilhada(cada seção terá sua propria PGA privada).

    Fonte:

    [1]: Oracle Database 11G: Manual do DBA, Bob Bryla,Kevin Loney

  • Dica: Área Global do Sistema (SGA). Se é Global, é compartilhada. Sendo assim, elimina (A), (D) e (E)


ID
263704
Banca
FCC
Órgão
TRT - 24ª REGIÃO (MS)
Ano
2011
Provas
Disciplina
Banco de Dados
Assuntos

Em relação ao PL/SQL, é INCORRETO afirmar:

Alternativas
Comentários
  • Como se trata de uma linguagem estruturada, devemos sim, declarar as variáveis antes de seu uso.
  • Como se trata de uma linguagem fortemente tipada, a declaracão do tipo de uma variável é obrigatória.
  • Eu posso estar errado, mas que eu saiba nem todos os comando SQL podem ser usados em blocos PLSQL. Logo, essa questão tem duas alternativas corretas.
  • Que eu saiba a estruturação dos blocos de código pela indentação é exclusiva da linguagem Python, o que faz da letra C incorreta também. Mas se tratando de FCC procure a questão mais errada, se é que isso é possível.

    Gabarito: letra e).

  • PL /SQL = (P)rocedural (L)anguage

    Bons estudos.


ID
263707
Banca
FCC
Órgão
TRT - 24ª REGIÃO (MS)
Ano
2011
Provas
Disciplina
Banco de Dados
Assuntos

Considere a linha de comando PL/SQL:

aux_salario emp.sal%type;

O parâmetro %type

Alternativas
Comentários
  • Exemplo de declarção de variáveis em pl/sql

    DECLARE
       var1 tabela1.col1%TYPE;   --> Declaração ancorada %TYPE - var1 tem mesmo tipo de col1  
       CURSOR cur1 IS SELECT col1,col2 FROM tabela1; --> cursor varre as linhas (= foreach)
       credit_limit CONSTANT REAL := 5000.00; --> Constante
       var2 NUMBER := 1; --> Declarando e iniciando variável
  • Acontece que algumas vezes não sabemos o tipo de dados que uma coluna de um esquema pode assumir, então podemos usar ooerador %TYPE para definir isso em tempo de execução.

    DECLARE

    nome clientes.nome%TYPE
     

    BEGIN
    ...

    END

    --

    Podemos fazer isso para esquemas inteiros também

    NomeDaTupla tupla%ROWTYPE

  • c-

    Ja o rowtype cria um registro completo usando as caracteristicas da tabela ou colunas retornadas de um cursor. 


ID
263710
Banca
FCC
Órgão
TRT - 24ª REGIÃO (MS)
Ano
2011
Provas
Disciplina
Banco de Dados
Assuntos

No PL/SQL, o comando DISTINCT tem como função:

Alternativas
Comentários
  • O DISTINCT, não só no PL/Sql, serve para eliminar a redundância de registros com a mesma informação.

    Por exemplo:
    Numa tabela de registro de ponto, você poderia querer saber todos os funcionários que trabalharam em 01/Jan/2011. Ao selecionar os registros poderia haver funcionários com mais de um apontamento no mesmo dia. Dando um distinct pelo COD_FUNCIONARIO  a consulta retornaria de forma sintética as pessoas que trabalharam naquele dia (ou pelo menos as que compareceram na empresa, mesmo que tenham ficado dormindo de ressaca pelo reveillon =D).

    Esse não pé um recurso exclusivo do Oracle.
  • Usamos o Distinct para selecionar os dados, porém, eliminando os dados duplicados.




ID
277264
Banca
CESPE / CEBRASPE
Órgão
TRE-ES
Ano
2011
Provas
Disciplina
Banco de Dados
Assuntos

Com relação a bancos de dados, PL/SQL e J2EE, julgue os itens a
seguir.

Se um bloco PL/SQL com erros de compilação for executado dinamicamente, esses erros serão capturados em tempo de execução e poderão ser capturados por um handler de exceção.

Alternativas
Comentários
  •  A PL/SQL tem um recurso conhecido como SQL dinâmico que permite que você crie e execute arbitrariamente as instruções SQL, bem como blocos PL/SQL em tempo de execução. Se você executar um bloco PL/SQL dinamicamente, que contenha um erro de compilação, esse erro será levantado em tempo de execução e poderá ser capturado por um handler de exceção.
     
    Se ocorrer um erro, uma exceção é levantada. Quando isso acontecer, o controle passa para o handler de exceção, que é uma seção separada do programa. Isso separa o tratamento de erro do restante do programa, o que torna a lógica do programa mais fácil de entender. Isso também assegura que todos os erros serão interceptados.

    http://dc307.4shared.com/img/MM2hhYNA/preview.html

ID
278161
Banca
CESPE / CEBRASPE
Órgão
TRT - 21ª Região (RN)
Ano
2010
Provas
Disciplina
Banco de Dados
Assuntos

Julgue o item abaixo, relativo à linguagem PL/SQL.

Caso seja utilizado o comando de manipulação de dados SELECT, da linguagem de consulta estruturada (SQL), em um bloco PL/SQL, deverá ser incluído, obrigatoriamente, a cláusula INTO.

Alternativas
Comentários
  • O SELECT INTO é atualmente um padrão para querys SQL em blocos PL/SQL. Esta cláusula é usada para colocar os dados retornados de uma consulta em variáveis pre-definidas no corpo do bloco, para que possam ser manipuladas posteriormente.
  • CERTO.
    Em SQL as instruções DML (Data Manipulation Language) são usadas para manipulação de dados e consiste nas operações de inserir dados (insert into), alterar dados (update) e excluir dados (delete).  Inserir, alterar e excluir dados são consideradas operações essenciais e de grande aplicação nas operações com banco de dados.  
    insert into, update e delete  são comandos da linguagem SQL e não dos bancos de dados, como o Oracle, SQLServer, Access ou MySQL. Isto significa que o aprendizado destes comandos tem enorme abrangência, pois você poderá usá-los em qulaquer banco de dados relacional, como os bancos acima citados.
    Fonte: http://www.luis.blog.br/inserir-alterar-e-excluir-dados.aspx
     
    PL/SQL (acrónimo para a expressão inglesa Procedural Language/Structured Query Language) é uma extensão da linguagem padrão SQL para o SGBD Oracle da Oracle Corporation. É uma Linguagem Procedural da Oracle que estende a linguagem SQL.
    Permite que a manipulação de dados seja incluída em unidades de programas. Blocos de PL/SQL são passados e processados por uma PL/SQL Engine que pode estar dentro de uma ferramenta Oracle ou do Server. A PL/SQL Engine filtra os comandos SQL e manda individualmente o comando SQL para o SQL Statement Executor no Oracle Server, que processa o PL/SQL com os dados retornados do Server.
    Fonte: http://pt.wikipedia.org/wiki/PL/SQL
  • E se for um cursor dentro de um bloco?

  • c-

    Em PL/SQL, todo select exige INTO para associar colunas com a variavel. 


ID
320488
Banca
CESPE / CEBRASPE
Órgão
INMETRO
Ano
2010
Provas
Disciplina
Banco de Dados
Assuntos

Com respeito aos conceitos e comandos PL/SQL, assinale a opção correta.

Alternativas
Comentários
  • A trigger é um gatilho que apenas o banco pode "startar". Quando ativa ela está iniciada e aguardando seu paramêtro de gatilho.

    O package é uma coleção de objetos e pode ter cursores, procedures, variáveis etc.

    O cursor é usado pra armazenar as linhas de uma consulta (SELECT).


ID
331549
Banca
FGV
Órgão
FIOCRUZ
Ano
2010
Provas
Disciplina
Banco de Dados
Assuntos

A versão MySQL 5 incorporou novas características como triggers, views e stored procedures. Triggers é um bloco PL/SQL armazenado em um banco de dados e executado sempre que um evento ocorre. Esse evento pode ser um DML, DDL ou mesmo um evento ocorrido do banco, como uma conexão, por exemplo. São comandos DML:

Alternativas
Comentários
  • A anulação desta questão era evidente, visto que as alternativas a) e b) são idênticas.
  • Triste pra quem sabia a matéria e poderia acertar tranquilamente.

    Vamos na fé.


ID
339088
Banca
COSEAC
Órgão
DATAPREV
Ano
2009
Provas
Disciplina
Banco de Dados
Assuntos

Um código PL/SQL anônimo é aquele:

Alternativas
Comentários
  • Eventualmente, podemos sentir a necessidade de executar um código PL/SQL singular, apenas uma vez, para algum teste ou para uma correção de um dado, por exemplo. Nesses casos (e em outros que julgar necessário) você pode usar um bloco anônimo. É um bloco PL/SQL que não será armazenado definitivamente no banco. O bloco será interpretado, executado e depois será descartado.

    https://phpdba.wordpress.com/2011/04/03/plsql-bloco-anonimo/


ID
339091
Banca
COSEAC
Órgão
DATAPREV
Ano
2009
Provas
Disciplina
Banco de Dados
Assuntos

Marque o único objeto da lista abaixo relativo à PL/SQL:

Alternativas

ID
339094
Banca
COSEAC
Órgão
DATAPREV
Ano
2009
Provas
Disciplina
Banco de Dados
Assuntos

Na linguagem PL/SQL, pacotes são conjuntos de:

Alternativas

ID
339097
Banca
COSEAC
Órgão
DATAPREV
Ano
2009
Provas
Disciplina
Banco de Dados
Assuntos

Um código de um procedimento PL/SQLé delimitado por:

Alternativas

ID
362740
Banca
CESPE / CEBRASPE
Órgão
TRE-BA
Ano
2010
Provas
Disciplina
Banco de Dados
Assuntos

Acerca de características de diferentes linguagens de programação,
julgue os itens seguintes.

A criação de stored procedure, que são procedimentos armazenados dentro do próprio banco de dados, não é possível na linguagem PL/SQL.

Alternativas
Comentários
  • Procedimento armazenado ou Stored Procedure é uma coleção de comandos em SQL para dispensamento de Banco de dados.
  • e-

    Procedure é um bloco de instruções com nome próprio para chamada. Em relação a um bloco anônimo, o procedure pode ser salvo e aceitar parametros (ou argumentos) e podem ser ativados por programa, sessao SQL e trigger


ID
377617
Banca
FCC
Órgão
TRE-AP
Ano
2011
Provas
Disciplina
Banco de Dados
Assuntos

Em PL/SQL é INCORRETO afirmar que triggers são executados quando

Alternativas
Comentários
  • Triggers são executadas quando há, necessariamente, a ocorrência de algum evento. A invocação explicita por parte do usuário não caracteriza um evento no banco de dados.
    Como as triggers estão sempre associadas a algum evento, os comandos BEFORE e AFTER informam se a trigger será disparada antes ou depois da ocorrência do evento.
    Os eventos mais comuns que disparam uma trigger são comandos DML como INSERT, UPDATE ou DELETE.

    http://www.java2s.com/Tutorial/Oracle/0560__Trigger/Triggers.htm
  • Resumindo: A principal diferença entre triggers (gatilhos) e stored procedures (procedimentos) é que os gatilhos são implícitos (são executados dado o acontecimento de um evento) e procedimentos são explícitos (a chamada ao procedimento ocorre de fato). 
  • Marquei letra B, pois DDL não são permitidas em PL/SQL. Mas concordo que a letra D também está incorreta.
  • A FCC colocou duas pegadinhas nessa questão, na letra A (para quem tem um conhecimento um pouco maior em triggers) e na letra B. Agora como sempre facilitou a vida do candidato colocando um coisa absurda na letra D.

    as instruções DML só podem ser executadas em tabelas (AFTER/BEFORE) ou VIEWS (INSTEAD OF) e como ambas são "schema objects" a letra A está perfeita.

    Triggers podem ser executas sim devido a operações DDL, está na própria referência da oracle:

    You can write triggers that fire whenever one of the following operations occurs:
    1. DML statements (INSERT, UPDATE, DELETE) on a particular table or view, issued
    by any user
    2. DDL statements (CREATE or ALTER primarily) issued either by a particular
    schema/user or by any schema/user in the database
    3. Database events, such as logon/logoff, errors, or startup/shutdown, also issued
    either by a particular schema/user or by any schema/user in the database

    Referência: Oracle Database Concepts 10gR2.
  • A) Todo mundo sabe que esta é a principal função dos TRIGGERS.
    B) Quem disse que um TRIGGER não pode ser acionado por uma DDL? E quanto o catálogo de dados do SGBD? Quando você usa uma DDL, o SGBD utiliza uma DML para alterar o catálogo de dados e com isso fica claro que um TRIGGER pode ser acionado por uma DDL.
    C) Da mesma forma, ao ocorrer um erro no servidor, o catálogo de dados é atualizado podendo ou não um TRIGGER ser disparado.
    D) Nunca, nem aqui, nem em marte, você pode chamar um TRIGGER explicitamente!
    E) Vide alternativas B e C.

  • Já resolvi 2x essa questão e insisto em marcar a letra C). Para mim parece totalmente sem sentido, pois só me vem a cabeça um falha de hardware. Acho que ficou muito vago o termo "erros de servidor". 

    Gabarito letra d)


ID
486586
Banca
FCC
Órgão
TCE-AL
Ano
2008
Provas
Disciplina
Banco de Dados
Assuntos

Um bloco PL/SQL que está associado a um evento ocorrido no banco de dados Oracle é do tipo

Alternativas
Comentários
  • O Oracle oferece vários tipos de triggers (gatilhos) e várias opções para quando e como elas são invocadas. Triggers podem ser escritos em PL/SQL, em Java ou como chamadas em C. Para os triggers que são executados em instruções DML como insert, update e delete, o Oracle admite triggers de linha e triggers de instrução. Triggers de linha são executados uma vez para cada linha que é afetada (atualizada ou execluída, por exemplo) pela operação DML. Um trigger de instrução é executado apenas uma vez por instrução. Em cada caso, o trigger pode ser definido como um trigger before ou after, dependendo se ele deve ser invocado antes ou depois de a operação DM ser executada.

    Ref: Silberschatz
  • b-

    TRigger executa de forma IMPLICITA com certo evento. Pode ser de banco de dados ou aplicação. 

    Procedure - instrução sql/pl com nome, sendo um bloco anônimo que é salvo como um objeto de banco de dados. EM procedure, a expressao or replace é opcional. 

    Function - pode conter lista de argumentos e deve retornar somente 1 valor


ID
486589
Banca
FCC
Órgão
TCE-AL
Ano
2008
Provas
Disciplina
Banco de Dados
Assuntos

NÃO é uma instrução DML permitida diretamente para uso em programa PL/SQL:

Alternativas
Comentários
  • 93!


    Em http://download.oracle.com/docs/cd/B13789_01/appdev.101/b10807/06_ora.htm#sthref711 é possível ler:

    "You can write INSERT, UPDATE, and DELETE statements directly in PL/SQL programs, without any special notation:

    CREATE table1 AS SELECT object_name, object_type FROM user_objects;BEGIN   INSERT INTO table1(col1, col2) VALUES('value1','value2');   UPDATE table1 SET col1 = 'another value' WHERE col2 IS NULL;   DELETE FROM table1 WHERE col1 = col2;   COMMIT;END;/DROP table1;"
    Além disso, commit não é DML é TCL (Transaction Control Language): http://orafaq.com/faq/what_are_the_difference_between_ddl_dml_and_dcl_commands


    93,93/93
  • Acho q a resposta está errada.

    Como mesmo explicou o colega acima, o commit não é DML.
  • Concordando com os colegas, a resposta deveria ser a letra E. Vejam abaixo:



    Fonte: Oracle9i programação PL/SQL: desenvolva aplicativos PL/SQL poderosos Por SCOTT URMAN - Pag.133
  • Commit não é DML!!!!! Resposta errada!!!!
  • resposta ta errada....  o commit é um DCL
  • Concordo com todos o Gabarito esta Errado.
    Resposta Correta letra "E"
    Até fui confirmar no link abaixo se houve alteração do gabarito, mas não ocorreu, muito estranho não houver recursos.
    http://www.concursosfcc.com.br/concursos/tceal107/index.html
  • Colegas, acredito que a banca quis fazer a seguinte pergunta:

    Quais das instruções a baixo são DML, porém que não é permitida diretamente para uso em programa PL/SQL.

    Ou seja, precisamos saber quais são DML (a letra E seria a primeira a ser elminada) e depois disso saber, dentre as instruções DML, qual não pode não pode ser usada diretamente no PL/SQL.

    Me fiz entender?

  • https://docs.oracle.com/cd/B12037_01/server.101/b10759/statements_1001.htm#i2099257

  • O Commit é DTL! (Linguagem de transação de dados), junto com Rollback, Begin_Work.

    Commit "finaliza uma transação dentro de um sistema de gerenciamento de banco de dados".

  • e não pode usar UPDATE diretamente em PL/SQL? que absurdo...


ID
486592
Banca
FCC
Órgão
TCE-AL
Ano
2008
Provas
Disciplina
Banco de Dados
Assuntos

A função de caractere pré-definida do PL/SQL que retorna um valor numérico é

Alternativas
Comentários
  • ASCII (string)  Retorna a representação decimal do primeiro byte de string no conjunto de caracteres do  banco de dados
      INITCAP (string)    Retorna string com o primeiro caractere  de cada palavra em letra maiúscula e os caracteres  restantes de cada palavra  em letras minúsculas.
      LOWER (string)   Retorna string com todos os caracteres em letras minúsculas. Quaisquer caracteres  que não  forem letras permanecem intactos. Se string tiver o tipo de dados CHAR, o resultado  também será CHAR. Se string for VARCHAR2, o resultado será VARCHAR2
      UPPER (string)   Retorna string com todas as letras em maiúsculas

      SOUNDEX(string)  Retorna a representação fonética de string. Isso é útil para comparar palavras  que  apresentam grafia diferente, mas são pronunciadas de modo semelhante

ID
486595
Banca
FCC
Órgão
TCE-AL
Ano
2008
Provas
Disciplina
Banco de Dados
Assuntos

Trechos de memória alocada para processar as declarações Select definidos pelo próprio PL/SQL são denominados

Alternativas
Comentários
  • Trechos de memória definidos pelo PL/SQL são cursores implícitos!

    Os cursores em PL/SQL podem ser explícitos e implícitos. O PL/SQL declara um cursor implicitamente para toda instrução DML (UPDATE, INSERT, DELETE, SELECT...INTO), incluindo consultas que retornam apenas uma linha. As consultas que retornam mais de uma linha deverão ser declaradas explicitamente.

    Fonte: http://www.devmedia.com.br/post-13041-Programando-com-cursores-PL-SQL.html
  • Cursores sao estruturas (select) para selecionar varias linahs de resultado. Selecionar mais de 1 registro nao é possivel pelo padrão select.....into. Logo, usar cursores previne erros ORA-01403:no data found & ORA-01422: exact fetch returns more than requested number of rows. 

    CURSORES EXPLICITOS- para mais de 1 linha. . Declarados em declare. Para processar as linhas, deve-se criar variavel para recebê-las, para tanto usa-se fetch. 

    sintaxe: fetch llllllnome cursorlllllll into lllllvariaveisllllllll

    Cada cursor explicito tem 4 atributos:

    %NOTFOUND: boolean. false se fetch rtornou valor. Contrário, true

    %FOUND: o oposto de %NOTFOUND

    %ROWCOUNT. N° DE REGISTROS

    %ISOPEN. true se cursor estiver aberto

    CURSORES IMPLÍCITOS - O banco de dados abre um cursor (implicitamente) para processar sql que nao tiver cursor explicito. nao é possivel executar operações open, fetch e close.


ID
515776
Banca
FCC
Órgão
INFRAERO
Ano
2011
Provas
Disciplina
Banco de Dados
Assuntos

No Oracle/PLSQL, a sintaxe correta para a revogação de privilégios em tabelas é:

Alternativas
Comentários
  • O comando revoke é utilizado para revogar privilégios de um usuário, papel  ou público.

    REVOKE privilegio objeto FROM usuario

    Exemplo:

    REVOKE select any table FROM app_user_one;

    Vai retirar as permissões do usuário app_user_one de fazer select em qualquer tabela do sistema.

    == Se fosse GRANT ==

    Para se criar um usuário:
    CREATE USER app_user IDENTIFIED BY passwd;

    Danto algumas permissões para esse usuário:
    GRANT select, insert, update, delete ON tabela TO app_user;

    Criando um Papel:
    CREATE ROLE papel

    Dando as permissões anteriores para o papel:
    GRANT select, insert, update, delete ON tabela TO papel

    Agora dando as permissões do papel para um usuário (Agora o usuário vai representar esse papel)
    GRANT papel TO usuario_x


     
  • Complementando o comentário para o colega, o comando REVOKE tem duas formas de ser usado:


    1 - Para revogar permissões de todas as tabelas - exibida pelo colega:
            REVOKE privilegio objeto FROM usuario
            Exemplo: REVOKE select any table FROM app_user_one;

    2 - Para revogar permissões de uma tabela específica - que o colega não mostrou e é a forma mais conhecida e cobrada na questão:
           REVOKE privilegio ON objeto FROM usuario        Exemplo: REVOKE select ON table FROM app_user_one;

    Obvio que é a mesma forma, porém utiliza-se o ANY TABLE (Todas as tabelas) ou ON <TABLE> (tabela específica)


ID
515785
Banca
FCC
Órgão
INFRAERO
Ano
2011
Provas
Disciplina
Banco de Dados
Assuntos

A seção do bloco PL/SQL executável e dentro da qual ficam instruções procedimentais e SQL é a

Alternativas
Comentários
  • A estrutura do PL/SQL inclui

    DECLARE (declaração de variáveis - opcional)

    a number;
    b number;


    BEGIN ( procedimentos - seção obrigatória )

    Aqui as instruções permitidas incluem:
    - DELETE
    - INSERT
    - UPDATE
    - SELECT

    Porém DDLs não são permitidas ( ALTER , DROP , CREATE ... )

    Nota, no PL/SQL o comando SELECT tem um uso especial, apresenta a clausula INTO.

    SELECT e,f INTO a,b FROM tabela WHERE e>1;

    EXCEPTION ( tratamento de erros - opcional )

    END
  • T. Renegado, Dentro do Begin não é permitido uso do select e é permitido usar DDL sim! 

    The events that fire a trigger include the following:

    *DML statements that modify data in a table (INSERT, UPDATE, or DELETE)

    *DDL statements

    *System events such as startup, shutdown, and error messages

    *User events such as logon and logof



    fhttp://docs.oracle.com/cd/B10500_01/server.920/a96524/c18trigs.htm

ID
515788
Banca
FCC
Órgão
INFRAERO
Ano
2011
Provas
Disciplina
Banco de Dados
Assuntos

Na passagem de parâmetros para Procedures e Funções em PL/SQL, o tipo de parâmetro que tem por objetivo enviar valores para as stored procedures é:

Alternativas
Comentários
  • Em PL/SQL os parametros das STORED PROCEDURES são IN, OUT e IN OUT.

    Exemplo

    CREATE PROCEDURE Adicionar( i IN Number) AS

            INSERT INTO T2 VALUES(  i  );

    END Adicionar
  • Parâmetros do tipo IN: são recebidos pela procedure
     
    Parâmetros do tipo OUT: são retornados da procedure e recebidos pelo ambiente chamador (Forms, Report, PL/SQL e outros subprogramas)
     
    Parâmetros do tipo IN OUT: são recebidos pela procedure e retornados/recebidos pelo ambiente chamador.
     

    OBS.: Parâmetros do tipo IN: Passagem de parâmetro POR VALOR
     
    Parâmetros do tipo OUT e IN OUT: Passagem de parâmetro POR REFERÊNCIA
     
     
    Fonte: Dominando o Oracle 9i: modelagem e desenvolvimento
  • As bancas gostam de confundir o tipo de parâmetro com o modo de parâmetro. Fiquem atentos a essa diferença e não esqueçam que elas confundem mesmo. Tem inclusive uma questão da CESPE que diz:

    CESPE: Em PL/SQL, parâmetros cujo tipo não esteja explicitamente declarado são considerados como do tipo IN. (GABARITO: CORRETO)

    Apesar de a CESPE marcar como correto pois o comportamento existe, o que deixou de ser especificado foi o modo e não o tipo (tipo seria VARCHAR(2), INTEGER, BOOLEAN, etc.).

    Segundo NAVATHE:

    "Em geral, cada parâmetro deve ter um tipo de parâmetro, o qual é um dos tipos de dados da SQL. Cada parâmetro também deve ter um modo de parâmetro, que é um dentre IN, OUT, ou INOUT. Estes correspondem a parâmetros cujos valores são apenas de entrada, apenas de saída (retornados) ou de entrada e saída, respectivamente."




ID
579631
Banca
FCC
Órgão
TRT - 19ª Região (AL)
Ano
2011
Provas
Disciplina
Banco de Dados
Assuntos

Em relação à criação de um bloco PL/SQL, está INCORRETO:

Alternativas
Comentários
  • É possível especificar uma variável sem atribuir um valor inicial. As variáveis não inicializadas explicitamente vão receber o valor NULL, sendo desnecessário inicializar uma variável com valor nulo.
  • Uma afirmação errada na alternativa "b" é: "todas as linhas devem terminar com ponto e vírgula". Não necessariamente. Um comando pode ir além de uma linha. Nesse caso, o ponto e vírgula somente deverá ser utilizado ao final do comando.
  • A Letra D também não estaria incorreta? Quando afirma que a diferença entre uma  variável e uma constante é  "apenas" pela palavra chave CONSTANT? Ela não deveria ter um valor inicial?
  • O " ; " significa fim de paragrafo. Desta forma, nem toda linha deverá conter " ; ".
    Exemplo:
    Em uma instrunção SQL ou em uma estrutura seletiva, como uso do IF e ELSE, não poderá conter o fim do paragrafo ( ; ) no "meio" da estrutura. Caso tenha, ocorrerá erro na compilação.
  • @leandro Silva Também marquei a D inicialmente mas depois vi que existe a declaração:

    				constant_name CONSTANT datatype := VALUE; 
    • constant_name = é o nome da variaável constante.
    • A palavra CONSTANT é reservada e assegura que os valores não vão mudar.
    • VALUE - Éum valor que precisa ser atribuido a constante na declaração da mesma. Não é possível atribuir o valor depois.

    Um exemplo:

    DECLARE 
    salary_increase CONSTANT number (3) := 10;  
  • Na minha opinião caberia recurso nessa questão, pelo que é dito na letra a):

    a) A seção de Declaração é opcional somente quando o bloco não utilizar constantes ou variáveis. 


    O autor diz que a parte declarativa é opcional somente quando o bloco não utilizar constantes ou variáveis. Acontece que ela deixa de ser opcional quando eu preciso declarar subprogramas, como no exemplo abaixo:

    DECLARE
      PROCEDURE proc1(number1 NUMBER); -- forward declaration
      PROCEDURE proc2(number2 NUMBER) IS
        BEGIN
          proc1(number2); -- calls proc1
        END;
      PROCEDURE proc1(number1 NUMBER) IS
        BEGIN
          proc2 (number1); -- calls proc2
        END;
    BEGIN
      NULL;


    Portanto, a palavra somente, em minha opinião, deixa a assertiva incorreta.


ID
582700
Banca
FCC
Órgão
TRT - 19ª Região (AL)
Ano
2011
Provas
Disciplina
Banco de Dados
Assuntos

Para uma dada tabela, foram criados 4 triggers utilizando- se PL/SQL, conforme abaixo:

I. Trigger 1 - BEFORE <statement>

II. Trigger 2 - BEFORE <for each row>

III. Trigger 3 - AFTER <statement>

IV. Trigger 4 - AFTER <for each row>

A sequência correta em que os triggers acima serão disparados é:

Alternativas
Comentários
  • PL/SQL Trigger Execution Hierarchy

    The following hierarchy is followed when a trigger is fired.
    1) BEFORE statement trigger fires first.
    2) Next BEFORE row level trigger fires, once for each row affected.
    3) Then AFTER row level trigger fires once for each affected row. This events will alternates between BEFORE and AFTER row level triggers.
    4) Finally the AFTER statement level trigger fires.
     


ID
582703
Banca
FCC
Órgão
TRT - 19ª Região (AL)
Ano
2011
Provas
Disciplina
Banco de Dados
Assuntos

Com relação aos modos de parâmetros de procedures PL/SQL é correto afirmar:

Alternativas
Comentários
  • Modos: IN / OUT / IN OUT   Parâmetros do tipo IN: são recebidos pela procedure   Parâmetros do tipo OUT: são retornados da procedure e recebidos pelo ambiente chamador (Forms, Report, PL/SQL e outros subprogramas)   Parâmetros do tipo IN OUT: são recebidos pela procedure e retornados/recebidos pelo ambiente chamador.  
    OBS.: Parâmetros do tipo IN: Passagem de parâmetro POR VALOR   Parâmetros do tipo OUT e IN OUT: Passagem de parâmetro POR REFERÊNCIA     Fonte: Dominando o Oracle 9i: modelagem e desenvolvimento
  • Há três tipos de passagens de parâmetros IN, IN OUT e OUT, sendo o tipo IN o padrão.
    • IN: informa que o parâmetro apenas entra no subprograma;
      • Apenas parâmetros IN podem receber valores literais, os demais provocarão erro; 
    • OUT: informa que o valor do parâmetro será fornecido dentro do subprograma para ser utilizado por quem o chamou;
      • Não é permitido a leitura de parâmetros OUT dentro do subprograma;
    • IN OUT: informa que o parâmetro poderá ser fornecido com um valor, ser modificado dentro do subprograma e ser utilizado por quem chamou o subprograma
    Em PL/SQL, por padrão, apenas o modo IN realiza passagem por referência, os demais modos realizam por valor
  • b-

    passagem de valores e parametros:

    in - passa valor

    out - retorna valor

    in out - passa e retorna valor. 

    Procedure pode conter lista de argumentos, podendo retornar +1 valores

    Function - mesma coisa, exceto que retorna somente 1 valor


ID
582706
Banca
FCC
Órgão
TRT - 19ª Região (AL)
Ano
2011
Provas
Disciplina
Banco de Dados
Assuntos

Sobre as formas de execução de funções (functions) do PL/SQL, considere:

I. Pode-se executar uma função como parte de uma instrução SELECT.

II. Pode-se atribuir o valor de uma função a uma variável.

III. Não é possível passar parâmetros para uma função quando ela é executada dentro de um trigger.

É correto o que consta APENAS em

Alternativas
Comentários
  • Functions são subprogramas que têm por objetivo retornar algum valor ou resultado. Podem ser utilizadas nas aplicações como qualquer função predefinida, ou seja, em atribuições a variáveis ou como argumentos em comandos SELECT
  • A questão tenta nos confundir com na sença III dizendo que uma função não pode receber parâmetros quando executada dentro de uma trigger.
    Uma trigger não pode receber parâmetros, mas os programas (Procedures ou Funções) chamadas dentro dela não têm nenhuma restrição quanto a isso.

ID
630817
Banca
FCC
Órgão
TRE-PE
Ano
2011
Provas
Disciplina
Banco de Dados
Assuntos

Sobre o engine PL/SQL, está INCORRETO afirmar:

Alternativas
Comentários
  • Questão muito complicada, mas o erro da B é afirmar que executa algo no "engine PL/SQL do banco".
    Na verdade executa os procedimentos na própria engine onde estiver o PL/SQL, como visto na A, pode não estar no banco.
    Para o banco, o PL/SQL manda apenas instruções SQL, o resto é feito na própria engine.
  • Apesar de parecer ser complicada, essa questão foi extraída diretamente da documentação do oracle:

    The PL/SQL compilation and run-time system is an engine that compiles and executes PL/SQL blocks and subprograms. The engine can be installed in an Oracle server or in an application development tool such as Oracle Forms.

    In either environment, the PL/SQL engine accepts as input any valid PL/SQL block or subprogram. Figure 1-3 shows the PL/SQL engine processing an anonymous block. The PL/SQL engine executes procedural statements but sends SQL statements to the SQL engine in the Oracle database.



    Fonte:
    http://docs.oracle.com/cd/B19306_01/appdev.102/b14261/overview.htm#i4603
  • de forma traduzida:
    PL / SQL Arquitetura

    A compilação PL / SQL e tempo de execução do sistema é um motor que compila e executa blocos PL / SQL e subprogramas. O motor pode ser instalado em um servidor Oracle ou em uma ferramenta de desenvolvimento de aplicações, tais como Oracle Forms.

    Em qualquer ambiente, o motor de PL / SQL aceita como entrada um bloco PL / SQL válida ou subprograma. Figura 1-3 mostra o mecanismo PL / SQL processamento de um bloco anônimo. O motor de PL / SQL executa instruções processuais, mas envia instruções SQL para o motor SQL no banco de dados Oracle.

    Figura 1-3 Mecanismo de PL / SQL


    http://docs.oracle.com/cd/B19306_01/appdev.102/b14261/overview.htm#i4603
  • vai me desculpar, mas esse "qualquer" da letra C não pode aparecer como "qualquer" fora do contexto de um texto maior. Tanto é, que o original em inglês usa "either"

  • alternativa b) incorreta. Ao executar uma instrução é dita como um bloco de instrução PL/SQL. O que for procedural é executado pelo SQL Statament Executor(Oracle Server) e o que for procedural é executado pelo Procedural Statamen Executor (A engine do PL/SQL). SQL Chega no PL/SQL Engine mas não é executado nele, pois não é processado no Procedural Statament Executor dentro do PL/SQL Engine.

  • A Arquitetura PL/SQL possui 2 elementos básicos: PL/SQL Engine  e  Oracle Server

     

    O primeiro a receber o bloco PL/SQL é o Engine. Ele executa a parte procedural e manda a parte SQL para o Oracle Server (servidor), pois é necessário acessar fisicamente o banco de dados para obter as informações requeridas na consulta.

     

    Logo, a letra B está incorreta, pois afirma que a parte SQL é executada no PL/SQL Engine. Já vimos que essa parte é executada no Oracle Server (Servidor).

     

    Bons estudos!


ID
641386
Banca
FCC
Órgão
TRT - 2ª REGIÃO (SP)
Ano
2008
Provas
Disciplina
Banco de Dados
Assuntos

A linguagem PL/SQL, introduzida nos gerenciadores de banco de dados ORACLE,

Alternativas
Comentários
  • Não entendi o item A. Aumenta a capacidade não-procedural adicionando funções procedurais?

  • SQL é uma linguagem declarativa. A PL/SQL aumenta a capacidade não-procedural (declarativa) do SQL ,através de construores precedurais (ex:controle de fluxo).

    Veja que o SQL continua sendo não-procedural (declarativa), mas tem sua capacidade aumentada pelo PL/SQL.


ID
646108
Banca
FCC
Órgão
TJ-PE
Ano
2012
Provas
Disciplina
Banco de Dados
Assuntos

Em uma estrutura de seleção usada na PL/SQL, é uma forma INVÁLIDA para realizar um teste de condição:

Alternativas
Comentários
  • Todos são estruturas condicionais, salvo LOOP que é estrutura de repetição


ID
646111
Banca
FCC
Órgão
TJ-PE
Ano
2012
Provas
Disciplina
Banco de Dados
Assuntos

Na parte declarativa de qualquer bloco PL/SQL, subprograma ou pacote pode-se criar coleções (collections), definindo-se o tipo de coleção

Alternativas
Comentários
  • COLEÇÕES
    Com freqüência, é conveniente manipular várias variáveis de uma vez como uma
    unidade. Esses tipos de dados são conhecidos como coleções. O Oracle7 fornecia um tipo
    de coleção: tabela index-by. O Oracle8i acrescentou outros dois tipos de coleção: tabelas
    aninhadas e varrays
    . O Oracle9i adiciona a capacidade de criar coleções de múltiplos
    níveis, isto é, coleção de coleções.

    http://pt.scribd.com/doc/58491916/217/Colecoes-no-banco-de-dados
  • Table 5-1 Characteristics of PL/SQL Collection Types

    Collection TypeNumber of ElementsSubscript TypeDense or SparseWhere CreatedCan Be Object Type Attribute

    Associative array (or index-by table)

    Unbounded

    String or integer

    Either

    Only in PL/SQL block

    No

    Nested table

    Unbounded

    Integer

    Starts dense, can become sparse

    Either in PL/SQL block or at schema level

    Yes

    Variable-size array (varray)

    Bounded

    Integer

    Always dense

    Either in PL/SQL block or at schema level

    Yes

    Unbounded means that, theoretically, there is no limit to the number of elements in the collection. Actually, there are limits, but they are very high—for details, see Referencing Collection Elements.

    Dense means that the collection has no gaps between elements—every element between the first and last element is defined and has a value (which can be NULL).



  • Understanding Associative Arrays (Index-By Tables)

    An associative array (also called an index-by table) is a set of key-value pairs. Each key is unique, and is used to locate the corresponding value. The key can be either an integer or a string.

    Using a key-value pair for the first time adds that pair to the associative array. Using the same key with a different value changes the value.


    Understanding Nested Tables

    Conceptually, a nested table is like a one-dimensional array with an arbitrary number of elements.

    Within the database, a nested table is a column type that holds a set of values. The database stores the rows of a nested table in no particular order. When you retrieve a nested table from the database into a PL/SQL variable, the rows are given consecutive subscripts starting at 1. These subscripts give you array-like access to individual rows.

    Understanding Variable-Size Arrays (Varrays)

    A variable-size array (varray) is an item of the data type VARRAY. A varray has a maximum size, which you specify in its type definition. A varray can contain a varying number of elements, from zero (when empty) to the maximum size. A varray index has a fixed lower bound of 1 and an extensible upper bound. To access an element of a varray, you use standard subscripting syntax.

    fonte: http://docs.oracle.com/cd/B28359_01/appdev.111/b28370/collections.htm#CHDBHJEI


  • Many programming techniques use collection types such as arrays, bags, lists, nested tables, sets, and trees. To support these techniques in database applications, PL/SQL provides the datatypes TABLE and VARRAY, which allow you to declare index-by tables, nested tables and variable-size arrays. In this chapter, you learn how those types let you reference and manipulate collections of data as whole objects. You also learn how the datatype RECORD lets you treat related but dissimilar data as a logical unit.


    http://docs.oracle.com/cd/B10500_01/appdev.920/a96624/05_colls.htm
  • Varray (Variable array - array de tamanho variável) é uma forma persistente, mas limitada, de coleção que pode ser criada no banco de dados, bem como em uma PL/SQL. Semelhante a uma tabela aninhada, um varray também é uma coleção homogênea unidimensional. O tamanho da coleção e o esquema de armazenamento são os fatores que diferenciam os varrays das tabelas aninhadas. Ao contrário de uma tabela aninhada, um varray pode acomodar apenas um número (fixo) definido de elementos.

    Fonte: devmedia
    Leia mais em: PL/SQL Collections http://www.devmedia.com.br/pl-sqlcollections/30646#ixzz3zvZuMae2

  • c-

    varrays no oracle são os famosos vetores, estruturas que armazenam variaveis do mesmo tipo em posições contíguas da memoria. Para se usar um varray no pl sql:

    create or replace type nomeDoVarray is varray (n) of tipo;


ID
646114
Banca
FCC
Órgão
TJ-PE
Ano
2012
Provas
Disciplina
Banco de Dados
Assuntos

Um bloco PL/SQL tem três partes: uma parte declarativa, uma parte executável e uma parte de tratamento de exceção que lida com as condições de erro. No bloco é necessária, no mínimo, a presença

Alternativas
Comentários
  • Estrutura Básica do PL/SQL

    A unidade básica em PL/SQL é um bloco. Todos os programas em PL/SQL são compostos por blocos, que podem estar localizados uns dentro dos outros. Geralmente, cada bloco efectua uma acção lógica no programa. Um bloco tem basicamente a seguinte estrutura:

    DECLARE

    Secção para declaração de variáveis,tipos e subprogramas locais.

    SELECTION

    Secção para escolher linhas em uma tabela.

    BEGIN

    Secção Executável, nesta secção ficam as instruções procedimentais e SQL. Esta é a única secção do bloco que é indispensável e obrigatória.

    EXCEPTION

    Secção/Sector onde ficam as instruções de tratamento de erro.

    END

    Fonte: wikipedia
  • Exemplo de um bloco mínimo:

     BEGIN   DBMS_OUTPUT.PUT('teste');  END;

    Exemplo bloco completo:


    DECLARE   l_message     VARCHAR2 (100) := 'Hello'; BEGIN   DECLARE     l_message2     VARCHAR2 (100) :=      l_message || ' World!';    BEGIN     DBMS_OUTPUT.put_line (l_message2);   END; EXCEPTION   WHEN OTHERS THEN     DBMS_OUTPUT.put_line (DBMS_UTILITY.format_error_stack); END;

    http://www.oracle.com/technetwork/issue-archive/2011/11-mar/o21plsql-242570.html

     

ID
661720
Banca
FCC
Órgão
TRE-CE
Ano
2012
Provas
Disciplina
Banco de Dados
Assuntos

Sobre Bancos de Dados, analise:

I. PL/SQL combina a facilidade e flexibilidade da SQL com a funcionalidade de procedimentos de uma linguagem de programação estruturada, tal como IF...THEN, WHILE e LOOP.

II. As declarações DML permitem que um usuário conceda a outros os privilégios, ou direitos, de acesso ao banco de dados e a objetos específicos dentro do banco de dados.

III. Os triggers de banco de dados podem ser usados para automatizar a geração de dados, fazer auditoria das modificações, implantar as restrições complexas de integridade e personalizar as autorizações complexas de segurança.

IV. As restrições de integridade são definidas com uma tabela e armazenadas como parte dessa tabela, de forma centralizada no dicionário de dados de um banco de dados, de modo que todos os aplicativos devem obedecer ao mesmo conjunto de regras.

Está correto o que consta em

Alternativas
Comentários
  •  DCL (Data Control Language - Linguagem de Controle de Dados)
    II. As declarações DML permitem que um usuário conceda a outros os privilégios, ou direitos, de acesso ao banco de dados e a objetos específicos dentro do banco de dados. 

    I, III, IV certas, LETRA B
  • Fiquei em dúvida no item III, quando foi citado 'personalizar as autorizações complexas de segurança'. Alguém saberia de algum exemplo prático para esta afirmação?

    Vlw!
  • Também fiquei na mesma dúvida.

    O máximo que encontrei foi:

    Integridade

    Apartir das Triggers podemos criar controles mais complexos para os relacionamento das tabelas.

    fonte:
    http://elderstroparo.blogspot.com.br/2010/02/o-que-e-trigger.html

    e

    How Triggers Are Used

    Triggers supplement the standard capabilities of Oracle Database to provide a highly customized database management system. For example, a trigger can restrict DML operations against a table to those issued during regular business hours. You can also use triggers to:

    • Automatically generate derived column values

    • Prevent invalid transactions

    • Enforce complex security authorizations

    • Enforce referential integrity across nodes in a distributed database

    • Enforce complex business rules

    • Provide transparent event logging

    • Provide auditing

    • Maintain synchronous table replicates

    • Gather statistics on table access

    • Modify table data when DML statements are issued against views

    • Publish information about database events, user events, and SQL statements to subscribing applications

      fonte: http://docs.oracle.com/cd/B28359_01/server.111/b28318/triggers.htm

       

  • Alguem sabe como resolver a IV) ? achei que restricoes de integridade faziam parte do dicionario de dados.

  • o DML é usado para gerenciar os dados através do esquema objeto.

  • Cuidado, o item II está errado pois tratam-se de declarações DDL (Data Definition Language):

    Data definition language (DDL) statements let you to perform these tasks:

        Create, alter, and drop schema objects

        Grant and revoke privileges and roles

        Analyze information on a table, index, or cluster

        Establish auditing options

        Add comments to the data dictionary


    http://docs.oracle.com/cd/B12037_01/server.101/b10759/statements_1001.htm

  • É impressionante como a FCC não se decide em alguns itens. Nesse item II, já tiveram 2-3 questões que ela considerava correto a DML permitir um usuário conceder privilégios, mas é isso aí. Ora é DML, ora é DCL, às vezes é DDL, é torcer pra que no dia da prova nós tenhamos sorte de marcar o item que eles acham que é o correto.


ID
661879
Banca
FCC
Órgão
INFRAERO
Ano
2011
Provas
Disciplina
Banco de Dados
Assuntos

Analise os comandos PL/SQL:
CREATE TABLE Departamentos (Id numeric(10) not null,Descricao varchar(30) not null, CONSTRAINT Dept_pk PRIMARY KEY(Id));
CREATE TABLE Vendedores (Id numeric(10) not null,Nome varchar(30) not null,Departamento numeric(10) not null, CONSTRAINT Vendedores_pk PRIMARY KEY(Id),CONSTRAINT fk_dept FOREIGN KEY(Departamento) REFERENCES Departamentos(Id));
CREATE TABLE Vendas (Vendedor numeric(10) not null,ValordeVenda real not null,CONSTRAINT fk_vendedores FOREIGN KEY(Vendedor) REFERENCES Vendedores(Id));
O comando PL/SQL necessário para listar o nome dos vendedores que obtiveram Valor de Venda superior a 100 e que pertençam ao departamento 1 nas tabelas criadas acima deve ser:

Alternativas
Comentários
  • Não se pode ter função agregrada (SUM(), MAX() etc) na clausula WHERE. Isso elimina a letra as letras: a, c

    A consulta deve ter 2 critérios: Valor de Venda > 100  e  Departamento = 1. Isso elimina a letras: d

    Toda consulta SELECT deve ter a clausula FROM. Isso elimina a letra: e

     

    Resposta, por técnica de exclusão, letra b 

     

    Bons estudos!


ID
661891
Banca
FCC
Órgão
INFRAERO
Ano
2011
Provas
Disciplina
Banco de Dados
Assuntos

Procedure, em PL/SQL, é um bloco de comandos

Alternativas
Comentários
  • Uma procedure nada mais é do um bloco PL/SQL nomeado. A grande vantagem sobre um bloco PL/SQL anônimo é que pode ser compilado e armazenado no banco de dados como um objeto de schema. Graças a essa característica as procedures são de fácil manutenção, o código é reutilizável e permitem que trabalhemos com módulos de programa.

    Uma procedure é, então, um bloco PL/SQL nomeado que pode aceitar argumentos e pode ser chamada por um programa, uma sessão SQL ou uma trigger.


ID
662095
Banca
FCC
Órgão
INFRAERO
Ano
2011
Provas
Disciplina
Banco de Dados
Assuntos

O PL/SQL

Alternativas
Comentários
  • A alternativa "E" é falsa pois permite recursos de tratamento de exceção.

  • Erro da letra C:
    O Engine SQL é responsável por executar os procedimentos SQL. Porém SQL são enviados ao banco de dados. Essa distinção aumenta o desempenho diminuindo a ida ao servidor, tendo-se os comandos executados de forma local. Logo, é preciso entender que quanto menos SQLs tiver o código mais rápido será (porque será executado de forma local pelo Engine PLSQL).


ID
666016
Banca
FUNCAB
Órgão
MPE-RO
Ano
2012
Provas
Disciplina
Banco de Dados
Assuntos

Observe a abaixo escrita em PL/SQL.

INSERT INTO Func VALUES (10,'Clarice',3200);
SAVEPOINT a;
INSERT INTO Setor VALUES (13,'Sales','Hyd');
SAVEPOINT b;
INSERT INTO Grade VALUES ('III',2300,4500);
ROLLBACK TO a:

Se em seguida for executado o comando COMMIT, serão gravados os valores nas tabelas:

Alternativas

ID
666028
Banca
FUNCAB
Órgão
MPE-RO
Ano
2012
Provas
Disciplina
Banco de Dados
Assuntos

A abaixo, escrita em PL/SQL, contém uma série de erros referentes ao uso das funções NEXTVALe CURRVAL, EXCETO: 

CREATE TABLE func_temp AS SELECT func_id, nome, sobrenome FROM func; CREATE TABLE func_temp2 AS SELECT func_id, nome, sobrenome FROM func; 
CREATE TABLE func_temp2 AS SELECT func_id, nome, sobrenome FROM func; 

DECLARE
       sequencial NUMBER;
BEGIN
     sequencial := func_seq.NEXTVAL;
     DBMS_OUTPUT.PUT_LINE ('Valor Sequencial Inicial: ' ||
    TO_CHAR(sequencial));
    INSERT INTO func_temp VALUES (func_seq.NEXTVAL,
   'Carolina', 'Novaes');
   -- Insere em func_temp2 o mesmo sequencial inserido em func_temp
   INSERT INTO func_temp2 VALUES (func_seq.NEXTVAL, 'Antonio', 'Novaes');
  DELETE FROM func_temp2 WHERE func_id = func_seq.CURRVAL;
  UPDATE func_temp SET func_id = func_seq.NEXTVAL
   WHERE nome = 'Carolina'AND sobrenome = 'Novaes'; sequencial := func_seq.CURRVAL;
   DBMS_OUTPUT.PUT_LINE ('Valor Sequencial Final: ' ||
   TO_CHAR(sequencial));
END;
/

Alternativas

ID
666031
Banca
FUNCAB
Órgão
MPE-RO
Ano
2012
Provas
Disciplina
Banco de Dados
Assuntos

Considerando o comando abaixo escrito emPL/SQL, é correto afirmar que o comando SELECTretornará:

SELECTp.nome, p.sobrenome, c.modelo
FROMpessoas p LEFTOUTERJOINcarros c
ONp.carro_id = c.carro_id

Alternativas

ID
675538
Banca
CONSULPLAN
Órgão
TSE
Ano
2012
Provas
Disciplina
Banco de Dados
Assuntos

Considerando STE o nome de uma tabela em um banco de dados, pode-se utilizar uma cláusula na sintaxe do comando SELECT em PLSQL, para eliminar tuplas em duplicata. Tal caso está corretamente exemplificado na seguinte alternativa

Alternativas
Comentários
  • Letra A é a CORRETA, veja o porquê:

    The SQL SELECT DISTINCT Statement

    In a table, some of the columns may contain duplicate values. This is not a problem, however, sometimes you will want to list only the different (distinct) values in a table.

    The DISTINCT keyword can be used to return only distinct (different) values.

    SQL SELECT DISTINCT Syntax

    SELECT DISTINCT column_name(s)
    FROM table_name

    Fonte: http://www.w3schools.com/sql/sql_distinct.asp
  • DISTINCT – Utilizada para selecionar dados sem repetição.

    SELECT DISTINCT FROM momento Pessoal
  • O comando 
    SELECT DISTINCT * FROM TABLE... até roda, mas não elimina os repetidos. O mais correto seria SELECT DISTINCT nomedacoluna FROM TABLE...

    Se a banca aceitasse recursos e se alguem quisesse encrencar, poderia argumentar que a instrução select não elimina duplicadas.

    Vide exemplo que criei no Postgres:

    select distinct * from projeto (a tabela tem 5 registros)

    20;"SISPROWEB";"2010-01-11";"2011-07-12"
    50;"SISPROWEB";"";""
    30;"BI PGJ";"2010-01-11";"2011-07-12"
    40;"GRIFO";"2010-01-11";"2011-07-12"
    10;"HORUS";"2010-01-11";"2011-07-12"

    Agora, colocando a coluna: select distinct nome from projeto
    "BI PGJ"
    "SISPROWEB"
    "HORUS"
    "GRIFO"

    Abraços,
    Llama
  • Exemplo péssimo do uso de DISTINCT, a não ser que a tabela STE não tenha chave primária, pra que colocar o DISTINCT em uma seleção de TODOS os campos de uma única tabela?

     

     


ID
723538
Banca
FCC
Órgão
TRT - 6ª Região (PE)
Ano
2012
Provas
Disciplina
Banco de Dados
Assuntos

Considere os seguintes comandos em PL/SQL:

CREATE TABLE VALORES (ID INT NOT NULL PRIMARY KEY,VALOR INT);
INSERT INTO VALORES VALUES (1,5); INSERT INTO VALORES VALUES (1,6); INSERT INTO VALORES VALUES (NULL,7); INSERT INTO VALORES VALUES (2,1); INSERT INTO VALORES VALUES (2,8); INSERT INTO VALORES VALUES (3,9); INSERT INTO VALORES VALUES (NULL,10); SELECT COUNT(VALOR) FROM VALORES WHERE VALOR >= 5;

A consulta retornará o valor

Alternativas
Comentários
  • Como id é chave primária e não pode ser nula.

    INSERT INTO VALORES VALUES (1,5);
    //Funciona

    INSERT INTO VALORES VALUES (1,6);
    //Nao funciona pois ja existe a chave primária 1

    INSERT INTO VALORES VALUES (NULL,7);
    //Nao funciona pois a chave primária não pode ser nula

    INSERT INTO VALORES VALUES (2,1);
    /Funciona

    INSERT INTO VALORES VALUES (2,8);
    //Não funciona pois ja existe a chave primária 2

    INSERT INTO VALORES VALUES (3,9);
    //Funciona

    INSERT INTO VALORES VALUES (NULL,10);
    //Não funciona pois os valores não podem ser nulo

    A tabela ficaria assim:

    ID | Valor
    --------------
    1  |  5
    ----------
    2  |  1
    ----------
    3  |  9
    ----------

    SELECT COUNT(VALOR) FROM VALORES WHERE VALOR >= 5;
    //Retornaria as linhas 1 e 3.

    Resultado: 2 linhas são retornadas
  • Complementando a informação acima.

    Retornará apenas uma tuplas porém o valor da coluna count será 2
  • Pessoal, a função Count tem como principal função a contagem da linhas. No caso específico ela solicita o número de linhas que será retornado, que no caso é dois. Observem bem que ele não vai retornar uma ou duas tuplas, ou colunas, ou uma nova tabela. O valor retornado será um inteiro positivo. Ou seja, ele retorna o número de linhas que corresponde a um determinado critério

    Mais detalhes no sítio: http://www.w3schools.com/sql/sql_func_count.asp.
    Outras funções importantes em uma select..... SUM, MIN, MAX, AVG, DISTINCT ....
    Bons estudos.

  • Pegadinha :(

     


ID
757780
Banca
FUMARC
Órgão
TJ-MG
Ano
2012
Provas
Disciplina
Banco de Dados
Assuntos

Analise as seguintes afirmativas sobre implementações em Oracle Database Server e PL/SQL.
I. As funções MAX e MIN podem ser utilizadas apenas com dados numéricos. 
II. Uma ROLE possibilita agrupar privilégios de forma a criar um perfil que pode ser atribuído de uma única vez. 
III. Não se deve usar a opção CYCLE na criação de uma SEQUENCE se ela será utilizada para gerar valores de chave primária.
Assinale a alternativa CORRETA:

Alternativas
Comentários
  • As funções MinMax, Count(...) e Count(*) podem ser utilizadas com qualquer tipo de dados (numéricos, alfanuméricos.

    I - Errada

    Resposta C
  • Pessoal, errei a questão ao considerar a sentença I como correta. Ela realemente está errada. Ao procurar motivos, encontrei boas referências, as quais gostaria de compartilhar com vocês. Segue:

    OBS1: Tanto o MIN quanto o MAX trabalham com tipos de dados numéricos, de data e caracteres.

    OBS2: Uma atenção especial deve ser dada ao usar MIN/MAX com caracteres. A definição funciona da seguinte forma:

    ‘A’ é menor que ‘Z’;
    ‘Z’ é menor que ‘a’;
    a string ’2′ é maior que a string ’100′

    … ou seja, as letras maiusculas representam um “valor menor” que as letras minusculas. Ex:

    -- no min, o nome retornado começa com maiúsculas -- no max, o nome retornado começa com minusculas SELECT MIN(NOME_EMP), MAX(NOME_EMP) FROM CERTIFICACAO.TAB_EMPREGADOS
    Ref -> http://certificacaobd.com.br/2012/08/24/oracle-1z0-051-topico-5-funcoes-agregadas/

    Bem legal!!!

    Abs!
  • Sinopse

    CREATE [ TEMPORARY | TEMP ] SEQUENCE nome
    [ INCREMENT [ BY ] incremento ]
    [ MINVALUE valor_mínimo | NO MINVALUE ]
    [ MAXVALUE valor_máximo | NO MAXVALUE ]
    [ START [ WITH ] início ] [ CACHE cache ]
    [ [ NO ] CYCLE ]

    CYCLE
    NO CYCLE
    A opção CYCLE permite uma seqüência reiniciar quando atingir o valor_máximo ou o valor_mínimo, respectivamente. Se o limite for atingido, o próximo número gerado será ovalor_mínimo ou o valor_máximo, respectivamente. Se NO CYCLE for especificado, toda chamada a nextval após a seqüência ter atingido seu valor máximo retorna um erro. Se nem CYCLE nem NO CYCLE for especificado, NO CYCLE é o padrão.


    Como a chave primária tem que ter valores únicos, não se pode usar a opção cycle pois ela reinicia os valores.

ID
758002
Banca
FUMARC
Órgão
TJ-MG
Ano
2012
Provas
Disciplina
Banco de Dados
Assuntos

A linguagem PL/SQL permite o uso de comandos SELECT diretamente dentro do programa. A seguir são apresentados trechos PL/SQL para obter o salário
(coluna Salario) do empregado (tabela EMPREGADO) de matrícula (coluna Matricula) 4050. Considere que existe um único empregado com a Matricula 4050. Está CORRETO o seguinte trecho:

Alternativas

ID
758005
Banca
FUMARC
Órgão
TJ-MG
Ano
2012
Provas
Disciplina
Banco de Dados
Assuntos

Em relação à Linguagem PL/SQL, analise as seguintes sentenças, marcando (V) para verdadeira e (F) para falsa.

( ) Variáveis booleanas em PL/SQL podem conter os valores TRUE, FALSE ou NULL.

( ) Para declarar um registro com a mesma estrutura de um registro de uma tabela é possível utilizar o atributo %ROWTYPE.

( ) Funções e procedimentos armazenados permitem a defnição de parâmetros do modo IN somente, ou seja somente de entrada.

( ) Na chamada de uma função ou procedimento armazenado somente é possível indicar a associação entre parâmetros reais e formais pela notação posicional (positional notation). Essa associação não pode ser baseada em notação nomeada (named position).


Está CORRETA a seguinte sequência de respostas:


Alternativas
Comentários
  • 1ª Sentença - Verdadeira.
    2ª Sentença - Verdadeira.
    3ª Sentença - Falsa. Funções e procedimentos também aceitam parâmetros do modo OUT (Saída) e IN OUT (Entrada e Saída);
    4ª Sentença - Falsa. Funções e procedimentos podem ser chamados tanto através da notação posicional quanto nomeada.
    Ex. Posicional: procedimento(valor1, valor2);
    Ex. Nomeada: procedimento(parâmetro1 => valor1, parâmetro2 => valor2)

ID
758533
Banca
FUMARC
Órgão
TJ-MG
Ano
2012
Provas
Disciplina
Banco de Dados
Assuntos

Em relação à Linguagem PL/SQL, todas as afrmativas abaixo estão corretas, EXCETO:

Alternativas
Comentários
  • Alternativa D
    Só é possível recuperar de um cursor aberto o registro seguinte ao atual e nunca o anterior.
    É utilizada a instrução FETCH para pegar o próximo registro ou abrir um cursor dentro de uma estrutura de LOOP.
  • Exemplo do uso de um Cursor:

    DECLARE
       CURSOR c1 IS SELECT ename, job FROM emp WHERE sal < 3000;
       my_record c1%ROWTYPE;
       ...
    BEGIN
       OPEN c1;
       LOOP
          FETCH c1 INTO my_record;
          EXIT WHEN c1%NOTFOUND;
          -- process data record
       END LOOP;
       CLOSE c1;
       ...
    END;
  • Cursor não anda pra trás

  • Acho que é a opção B  pq com esse comando eu consigo dar commit dentro de uma trigger.     PRAGMA AUTONOMOUS_TRANSACTION;

    Fiz um teste e commitou sussegado (em uma tabela de historico), e eu consigo sim consultar um registro anterior do cursor normalmente. estou aprendendo ainda mas consegui testar esses dois.  se estiver errado alguem da uma luz...


ID
779104
Banca
CESPE / CEBRASPE
Órgão
TRE-RJ
Ano
2012
Provas
Disciplina
Banco de Dados
Assuntos

Julgue os itens a seguir, relativos a conceitos de PL/SQL.

PL/SQL é a linguagem para consulta de banco de dados padrão ANSI (American National Standards Institute) utilizado pelos principais sistemas gerenciadores de banco de dados (SGBDs) do mercado.

Alternativas
Comentários
  • PL/SQL é uma linguagem proprietário do banco de dados ORACLE.
    A linguagem SQL ANSI é que seria uma linguagem padrão para todos os SGBDs no mercado.
  • PL/SQL é uma linguagem de programação baseada em opções monográficas de edição. Ela é composta por três camadas, definição, edição, e conclusão.

    Permite que a manipulação de dados seja incluída em unidades de programas. Blocos de PL/SQL são passados e processados por uma PL/SQL Engine que pode estar dentro de uma ferramenta Oracle ou do Server. A PL/SQL Engine filtra os comandos SQL e manda individualmente o comando SQL para o SQL Statement Executor no Oracle Server, que processa o PL/SQL com os dados retornados do Server.

  • Fonte do cometário do colega:

    http://pt.wikipedia.org/wiki/PL/SQL

    Bons estudos

  • Pessoal, a questão está errada por 2 motivos:

    1. PL/SQL é uma linguagem procedural e um veículo para processamento de transações. (e não uma linguagem de consulta, como posto na questão.)
    2. PL/SQL é proprietária do Oracle (e não utilizada pelos principais SGBD do mercado). Para MS-SQL temos a linguagem Transact-SQL e para o BD2 temos a SQL PL.

    É isso!

    Abs.
  • A principal  linguagem para consulta de banco de dados padrão ANSI  é o SQL


ID
779107
Banca
CESPE / CEBRASPE
Órgão
TRE-RJ
Ano
2012
Provas
Disciplina
Banco de Dados
Assuntos

Julgue os itens a seguir, relativos a conceitos de PL/SQL.

A unidade básica em PL/SQL é um bloco com a seguinte estrutura: DECLARE, que é a seção para declaração de variáveis, tipos e subprogramas locais; BEGIN — única seção do bloco que é indispensável e obrigatória —, que é a seção executável, na qual ficam as instruções procedimentais e SQL; EXCEPTION, que é a seção/setor onde ficam as instruções de tratamento de erro; e END.

Alternativas
Comentários
  • Ctrl+c e Ctrl+V do wikipedia:
    http://pt.wikipedia.org/wiki/PL/SQL
  • É exatamente essa a estrutura de uma unidade básica PL/SQL: 

    DECLARE
          var NUMBER(6,1);
    BEGIN
          var := 12345;
          INSERT INTO TabelaX
          VALUES (‘Valor’, var);
          COMMIT;
    EXCEPTION
          WHEN CONDICAO_VALOR THEN
          INSERT INTO TabelaX
          VALUES (‘Valor nao permitido’, var);
    END;

    Gabarito: Certo
  • Errei a questão, pois no enunciado diz, "BEGIN — única seção do bloco que é indispensável e obrigatória". No entanto se você compilar um código PL/SQL sem o END; vai dar erro.

  • Fiz uma comparação com a estrutura de um bloco anônimo. Que justamente precisam dessa estrutura.
    [DECLARE]

    BEGIN

    -- COMANDOS DE EXEUCÇÃO

    [EXCEPTION]

    END;

    /


  • Difícil engolir que não precisa do END.

  • BEGIN é mandatório, por lógica o END também deve ser.

  • Estrutura Básica do PL/SQL
    A unidade básica em PL/SQL é um bloco. Todos os programas em PL/SQL são compostos por blocos, que podem estar localizados uns dentro dos outros. Geralmente, cada bloco efetua uma ação lógica no programa. Um bloco tem basicamente a seguinte estrutura:


    DECLARE

    /* Seção para declaração de variáveis, */
    /* tipos e subprogramas locais. */


    BEGIN

    /* Seção Executável: nesta seção ficam */
    /* as instruções procedurais e SQL. */
    /* Esta é a única seção do bloco que é indispensável. */


    EXCEPTION

    /* Seção onde ficam as instruções de tratamento de erro. */


    END;

    Somente a seção executável é obrigatória, as outras seções são opcionais. As únicas instruções SQL permitidas em um programa PL/SQL são SELECT, INSERT, UPDATE, DELETE , várias outras instruções de manipulação de dados e mais algum controle de transação. Contudo, a instrução SELECT tem uma forma especial na qual uma única tupla é colocada em variáveis. 
    As instruções de definição de dados como CREATE, DROP ou ALTER não são permitidas. A seção executável também contém construções tais como atribuições, desvios, loops, chamadas a procedimentos e triggers.

    FONTE: https://goo.gl/AGx2lP

  • .. única seção do bloco que é indispensável e obrigatória..

    essa parte não invalida a questão?

    O END e a Lógica do programa também são obrigatórios..

  • Faltou quem entrasse com recurso, obviamente que o END também é obrigatório.


ID
779110
Banca
CESPE / CEBRASPE
Órgão
TRE-RJ
Ano
2012
Provas
Disciplina
Banco de Dados
Assuntos

Julgue os itens a seguir, relativos a conceitos de PL/SQL.

CURSOR é uma área de trabalho temporária criada na memória do sistema quando um comando SQL é executado.

Alternativas
Comentários
  • gabarito certo.
    http://www.pl-sql.com.br/2011/09/08/cursor-em-plsql/
  • Quando uma instrução SQL é executada no Oracle, o PL/SQL cria uma área de trabalho privada para a instrução chamada PGA. É onde os dados que são retornados da instrução SQL são armazenados. O nome do cursor é basicamente um apontador para esta área. Podem ser implícitos ou explícitos. Toda instrução SQL que é executada é um cursor implícito. Um cursor explícito é aquele que tem um nome e é declarado explicitamente, como no exemplo abaixo:

    DECLARE 

        /* DECLARANDO O CURSOR DE PRODUTOS */

        CURSOR C_PRODUTOS IS 

            SELECT * FROM TB_PRODUTOS;

           

        /* DECLARANDO UMA VARIAVEL QUE SERA O REGISTRO DA TABELA */

        REG_PRODUTO C_PRODUTOS%ROWTYPE;

       

    BEGIN

        /* ABRE CURSOR */

        OPEN C_PRODUTOS

       

        LOOP

            /* LÊ UM REGISTRO DO CURSOR */

            FETCH C_PRODUTOS INTO REG_PRODUTO;

           

            /* ABANDONA O LOOP CASO SEJA O FINAL DO CURSOR */

            EXIT WHEN C_PRODUTOS%NOTFOUND;

           

            /* 

            AQUI SERA INSERIDO O CODIGO QUE IRA MANIPULAR OS DADOS COMO: 

                - INSERIR EM OUTRA TABELA, 

                - FAZER ALGUM CALCULO, 

                - ETC. 

            */

       

        END LOOP;

       

        /* FECHA O CURSOR */

        CLOSE C_PRODUTOS

    END;


  • c-

    Cursor sao ponteiros para acessar a área de memória do sql. Sao usados quando se deseja buscar mais de 1 row. Isso evita os erros:

    ORA-01403- no data found

    ORA-01422 - exact fetch returns more than requested number of rows. Os cursores podem ser explicitos (usam operações open, fetch & close) ou implicitos (NOTFOUND, FOUND, ROWCOUNT E ISOPEN).


ID
784282
Banca
CESPE / CEBRASPE
Órgão
MEC
Ano
2011
Provas
Disciplina
Banco de Dados
Assuntos

Julgue o  item   subsequente, relativo  ao EnterpriseDB.

O Postgres Plus Advanced Server da EnterpriseDB pode executar aplicações escritas para bancos de dados Oracle, por intermédio do núcleo do PostgreSQL modificado, para reconhecer Oracle PL/SQL.

Alternativas
Comentários
  • Quem não tem acesso:  - -> CERTO


ID
795184
Banca
FCC
Órgão
TST
Ano
2012
Provas
Disciplina
Banco de Dados
Assuntos

As linguagens procedurais dos bancos de dados ORACLE e SQL Server são, respectivamente,

Alternativas
Comentários
  • RESPOSTA CORRETA: "A"

    "... Como exemplos, podemos citar o Oracle Database, que possui a linguagem PL/SQL, o SQL Server que possui a linguagem Transaction SQL e o DB2 que possui a linguagem SQL PL. Essas linguagens foram criadas para atender a necessidade de se criar programas dentro do próprio banco de dados e são extremamente úteis para executar tarefas de manutenção e para otimizar transações das aplicações que acessam o banco"

    Fonte: http://www.profissionaisti.com.br/2011/10/plsql-o-que-e-e-quando-usar/

  • PL/SQL - Oracle

    T-SQL - SQL Server

  • No oracle, PL/SQL é uma linguagem procedural com comandos de if/else, while, for etc. Proposito semelhante é consiguido com o transact-sql no sql server


ID
804661
Banca
CESPE / CEBRASPE
Órgão
MEC
Ano
2011
Provas
Disciplina
Banco de Dados
Assuntos

Com referência aos conceitos de PL/SQL do Oracle 10g, julgue o  próximo  item.

Em um bloco PL/SQL, as variáveis podem assumir qualquer tipo de datatype das linguagens SQL e Oracle, exceto os tipos Positive, Natural, Boolean e Binary Integer.

Alternativas
Comentários
  • Variável escalar numérica

    São as variáveis utilizadas para armazenar números inteiros ou valores reais. Existem três derivações deste tipo de variável no PL/SQL: NUMBER, PLS_INTEGER e BINARY_INTEGER.


    fonte: http://maisplsql.blogspot.com.br/2013/10/tipos-de-variaveis-parte-1.html

  • errado-

    variaveis sao OBJETOS que podem conter valores, podendo ser atualkizadas a qualquer momento. antes de serem usadas, devem declaradas em DECLARE.Podem ser do tipo: CHAR, NUMBER, DATE, BOOLEAN.


ID
804667
Banca
CESPE / CEBRASPE
Órgão
MEC
Ano
2011
Provas
Disciplina
Banco de Dados
Assuntos

Com referência aos conceitos de PL/SQL do Oracle 10g, julgue o  próximo  item.

A primeira seção de um bloco PL/SQL, chamada de declaração, é opcional. Contudo, se o bloco usar variáveis ou constantes, todas elas devem ser previamente declaradas antes de serem determinadas em um comando.

Alternativas
Comentários
  • A primeira seção do bloco, que é
    chamado de declaração, é opcional. Contudo,
    se o bloco usar variáveis ou constantes, todas elas devem
    ser previamente declaradas antes de serem determinadas em um comando.
    Essa seção é iniciada pela palavra chave
    DECLARE aonde podemos declarar identificadores como:

     Declarar o tipo do identificador como: constante e variáveis
    Declarar o tipo de dado do identificador
    Atribuir (inicilizar) um conteúdo ao identificador

    Fonte: https://imasters.com.br/artigo/2164/oracle/abordagem-geral-do-o-pl-sql/?trace=1519021197&source=single

  • PARTES DO PL/SQL:

    DECLARE - Seção declarativa   -  Opcional, caso não use VARIAVEIS ou CONSTANTES

    BEGIN - Seção executavel  -  Obrigatória

    EXCEPTION - Tratamento de exceções - Opcional

    END;Opcional

    fonte:material do Dominando TI


ID
804670
Banca
CESPE / CEBRASPE
Órgão
MEC
Ano
2011
Provas
Disciplina
Banco de Dados
Assuntos

Julgue os itens subsecutivos, a respeito de conceitos e comandos PL/SQL do Oracle 10g.

Diferentemente de uma função que não retorna resultados, uma stored procedure executa comandos e retorna um resultado que é armazenado nas variáveis da seção DECLARE.

Alternativas
Comentários
  • Uma função retorna resultados através do comando return.


ID
804676
Banca
CESPE / CEBRASPE
Órgão
MEC
Ano
2011
Provas
Disciplina
Banco de Dados
Assuntos

Julgue os itens subsecutivos, a respeito de conceitos e comandos PL/SQL do Oracle 10g.


O uso da cláusula INTO no comando SELECT, dentro de um programa PL/SQL, permite transferir o conteúdo dos campos de uma linha de tabela para variáveis de memória.

Alternativas
Comentários
  • c-

    EM PL/SQL, todo comando SELECT exige INTO para associar atributo da coluna á variavel:

    SELECT colunas INTO variaveis FROM tabelas WHERE condicoes etc


ID
836632
Banca
CESPE / CEBRASPE
Órgão
ANAC
Ano
2012
Provas
Disciplina
Banco de Dados
Assuntos

Acerca do sistema gerenciador de banco de dados Oracle, julgue os itens a seguir.

Procedure e function são objetos PL/SQL que armazenam blocos de códigos PL/SQL. Destes dois, o objeto function permite que se retorne um valor a partir do comando Return.

Alternativas
Comentários
  • O PL/SQL é dito uma extensão da linguagem SQL usada no banco de dados ORACLE, e por meio dela podem ser criados objetos de esquema  tais como triggers, stored procedures, functions e packages.

    Stored procedure ==> procedimento armazenado que executa comandos.

    Function ==> Executa comandos e retorna um resultado (return)

    Assertiva correta!

    Bons estudos !!!



  • c-

    function - retorna somene 1 valor com RETURN.

    procedure - retorna valores com OUT.


ID
879568
Banca
FEPESE
Órgão
FATMA
Ano
2012
Provas
Disciplina
Banco de Dados
Assuntos

Assinale a alternativa que defne corretamente a exceção predefnida no Oracle 10g que corresponde ao erro interno do PL/SQL:

Alternativas
Comentários
  • Exceções Descrição
    too_many_rows A SELECT de linha única retornou mais de uma linha.
    invalid_cursor Houve a tentativa de operação ilegal de cursor.
    value_error Ocorreu um erro de aritmética, conversão, truncagem ou
    restrição.
    invalid_number A conversão de uma string para um número, falhou.
    zero_divide Ocorreu uma tentativa de dividir por zero.
    dup_val_on_index Houve uma tentativa de inserir, em duplicata, um valor em uma
    coluna (ou um conjunto de colunas) que possui um índice
    exclusivo (UNIQUE KEY ou PRIMARY KEY).
    cursor_already_open Houve uma tentativa de abrir um cursor que foi aberto
    anteriormente.
    not_logged_on Uma chamada de banco de dados foi feita sem o usuário estar
    conectado ao Oracle.
    transaction_backed_out Uma parte remota de uma transação teve “rollback”.
    login_danied Um login no banco de dados Oracle falhou por causa de um nome de
    usuário e/ou senha inválidos.
    program_error A PL/SQL encontrou um problema interno.
    storage_error A PL/SQL ficou sem memória ou a memória está corrompida.
  • c-

    exceções:

     

    dup_val_on_index - indeice duplicado

     

    invalid  number - erro conversao valores

     

    login_deined - usuario/senhas invalidos

     

    no-date_found - nenum registro encontrado

     

    not_logged_on - nao conectado

     

    program_error - erro interno

     

    storage_error - memoria

     

    timeout_on_resource - timaout

     

    too_many_rows - mais de 1 linha

     

    value_error - erro conversao  de dados

     

    zero_divide - x / 0

     


ID
906298
Banca
FCC
Órgão
TRT - 9ª REGIÃO (PR)
Ano
2013
Provas
Disciplina
Banco de Dados
Assuntos

A linguagem PL/SQL, utilizada no gerenciador de banco de dados ORACLE, possui o conjunto de comandos SQL e acrescenta recursos de programação utilizados em outras linguagens de programação.

Considere a seguinte subrotina PL/SQL:

CREATE OR REPLACE PROCEDURE decisao (a IN REAL, b IN REAL) IS x REAL;
   BEGIN
     x := a + b;
         IF (x > 10)
        THEN DBMS_OUTPUT.put_line (x);
        ELSE DBMS_OUTPUT.put_line (‘Valor inferior ao limite’);   
   END IF;
  END;
/




Tendo sido esta rotina implementada no Oracle Database 10g Express Edition no Windows, já executada a linha de comandos SQL que dá acesso ao banco de dados, é correto afirmar que

Alternativas
Comentários
  • Analisemos as alternativas:

    a) o resultado de EXEC decisao (5.5, 4.5); é 10.0.

    Incorreta. O resultado será 'Valor inferior ao limite'

    b)  a stored procedure decisao recebe 2 parâmetros reais e apresenta apenas o resultado da adição dos valores cuja soma seja maior ou igual a 10.

    Incorreta. A procedure possui 2 resultados possíveis: o resultado da adição dos valores e a mensagem de 'Valor inferior ao limite'

    c) o comando de decisão IF utilizado na stored procedure apresenta erros de sintaxe.

    Incorreta. A sintaxe do comando IF está correta.

    d) o resultado de EXEC decisao (5.5, 6.5); é 12.0.

    Correta.

    e) não existe ELSE no comando de decisão IF; o certo seria usar ELSEIF.

    Em PL/SQL, existe o comando ELSE e o comando ELSIF. Veja um exemplo da estrutura a seguir:

    IF condition THEN   {...statements...}ELSIF condition THEN   {...statements...}ELSE   {...statements...}END IF;

    Portanto a resposta correta está na alternativa D.


ID
944461
Banca
VUNESP
Órgão
FUNDUNESP
Ano
2013
Provas
Disciplina
Banco de Dados
Assuntos

Na linguagem PL/pgSQL do sistema gerenciador de bancos de dados PostgreSQL, versão 9.1, a forma para declarar uma variável denominada “first”, como sendo do tipo inteiro e com valor padrão igual a 10, é:

Alternativas
Comentários
  • Apesar da banca ter tentado complicar com o nome da variável sendo "first" o método segue a forma tradicional:

    first integer DEFAULT 10;
  • Prezados,
    A regra geral para declaração de variáveis do PostgreSQL é :
    name[ CONSTANT ] type [ COLLATE collation_name ] [ NOT NULL ] [ { DEFAULT | := } expression ];
    Portanto, a única alternativa que atende a regra de declaração é a letra E.
    Fonte : http://www.postgresql.org/docs/9.1/static/plpgsql-declarations.html
  • Lembrando que o operador de atribuição no pgsql  é := e não = 

  • Quem não tem acesso:  - -> E


ID
944464
Banca
VUNESP
Órgão
FUNDUNESP
Ano
2013
Provas
Disciplina
Banco de Dados
Assuntos

Na linguagem PL/pgSQL do sistema gerenciador de bancos de dados PostgreSQL, versão 9.1, uma das formas para se obter o efeito de um comando é verificar o conteúdo da
variável especial denominada

Alternativas
Comentários
  • Pelo meu entendimento, a banca quis algo do gênero:

    SELECT * INTO myrec FROM emp WHERE empname = myname; IF NOT FOUND THEN     RAISE EXCEPTION 'employee % not found', myname; END IF;
    Quando pesquisar alguma coisa e quiser realizar alguma operação através de um bloco de seleção, utilizar o comando FOUND, podendo ou não vir precedido do NOT, como é o caso acima.

    Fonte do trexo do código: http://www.postgresql.org/docs/9.1/static/plpgsql-statements.html
  • Prezados,
    Segundo a documentação do PostgreSQL , há duas maneiras de se obter o efeito de um comando, uma delas é usar o comando GET DIAGNOSTICS , a outra maneira é checar o valor da variável especial FOUND , que é do tipo BOOLEANA.
    Portanto, alternativa correta é a letra B
    Fonte : http://www.postgresql.org/docs/9.1/static/plpgsql-statements.html#PLPGSQL-STATEMENTS-DIAGNOSTICS
  • Quem não tem acesso:  - -> B

  • FOUND é uma variável especial do tipo BOOLEAN(começa com valor FALSE dentro de cada chamada de função PL/pgSQL) no PL/pgSQL.

    O propósito dela é verificar o efeito de um comando, ela terá valor TRUE quando em certos casos houver "presença de resultado ou conteúdo":

    Fonte: seção 39.5.5. Obtaining the Result Status -> "segundo método para determinar os efeitos de um comando":

    https://www.postgresql.org/docs/9.1/plpgsql-statements.html


ID
960889
Banca
IADES
Órgão
EBSERH
Ano
2013
Provas
Disciplina
Banco de Dados
Assuntos

Assinale a alternativa correta, em relação aos conceitos da linguagem de programação procedural (PLSQL).

Alternativas
Comentários
  • Letra E

    The INVALID_NUMBER exception is raised when an attempt is made to convert an invalid character string into a number.



  • Por mais que eu coloque uma variável para ser executada dentro do while, não seria uma quantidade de vezes predeterminada?


ID
960892
Banca
IADES
Órgão
EBSERH
Ano
2013
Provas
Disciplina
Banco de Dados
Assuntos

Uma procedure contém um grupo de instruções SQL e PLSQL e permitem centralizar sua lógica do negócio no banco de dados. Com base neste conceito, assinale a alternativa correta.



Alternativas

ID
985153
Banca
CESPE / CEBRASPE
Órgão
CPRM
Ano
2013
Provas
Disciplina
Banco de Dados
Assuntos

A respeito de desenvolvimento de aplicações web e de sistemas operacionais Windows, Linux e BSB, julgue os itens a seguir.


O Oracle HTTP Server foi projetado para suportar páginas dinâmicas desenvolvidas na linguagem PL/pgSQL, que tem como característica a aceitação de parâmetros vetoriais e de conexão nativa com qualquer servidor de banco de dados.

Alternativas
Comentários
  • PL/pgSQL é do postgre.


ID
992101
Banca
FCC
Órgão
TRT - 12ª Região (SC)
Ano
2013
Provas
Disciplina
Banco de Dados
Assuntos

Os comandos em PL/SQL utilizados para remover todas as linhas de uma tabela, remover linhas de uma tabela com a possibilidade de utilização de um critério para a seleção das linhas que serão removidas e remover uma tabela de um banco de dados são, respectivamente,

Alternativas
Comentários
  • Primeiramente não existe o comando ERASE o que elimina as alternativas A, C e E. 
    Explicando-se os comandos: 
    TRUNCATE: remove todas as linhas de uma tabela funcionando como o DELETE, porém sem a utilização da cláusula WHERE. Porém é mais rápido.
    DELETE: remove uma ou mais linhas dependendo do critério.
    DROP: remove uma tabela assim como os seus dados, índices, restrições, enfim...

    ... logo a alternativa B é a correta.
  • Lembrando também que o TRUNCATE zera os índices da tabela, diferente de utilizar DELETE FROM sem WHERE.
  • Diferença entre os comandos

    http://beginner-sql-tutorial.com/pt/sql-delete-statement.htm


  • Alguém por favor poderia explicar o uso do DROP nessa questão?  Achava que comandos DDL não eram permitidos em PL/SQL... 

  • O que faz essa questão entrar em Oracle? Alguém poderia informar?

  • O Oracle utiliza o PL/SQL.

    O comando Drop é sim utilizado como um comando DDL no Oracle. Se quiser pode dar uma olhada aqui: http://certificacaobd.com.br/2012/12/26/oracle-1z0-051-topico-10-usando-clausulas-ddl-para-criar-e-gerenciar-tabelas/

    Valeus! 

  • Lembrando que o truncate não dispara triggers convencionais, mas apenas triggers especiais.


    Fonte: https://www.toadworld.com/platforms/oracle/w/wiki/2237.truncate-trigger

  •  

    As diferenças entre TRUNCATE e DELETE:

    1 – TRUNCATE é um comando DDL enquanto DELETE é um comando DML.

    2 – TRUNCATE é muito mais rápido do que o DELETE.

    Motivo: Quando você digita DELETE todos os dados a serem excluídos são copiados primeiro para  Tablespace de UNDO.

    3 – Não existe Rollback para o comando TRUNCATE mas para o DELETE sim. O comando TRUNCATE remove o registro permanente.

    4 – Em caso de TRUNCATE, A TRIGGER não é disparada, mas no caso do comando DELETE, existindo TRIGGER para deleção a mesma é disparada.

    5 – Você não pode usar condições (cláusula WHERE) com o comando TRUNCATE. Mas com o comando DELETE, você pode escrever usando condições (cláusula WHERE).

    Fonte:https://sergioleitaodba.wordpress.com/2014/10/20/sql-diferenca-entre-os-comandos-truncate-delete-e-drop/

  • b-

    Se preferir apagar todas linhas da tabela, usa truncate table nometabela e commit. Mais eficiente do que usar delete linha por linha


ID
992104
Banca
FCC
Órgão
TRT - 12ª Região (SC)
Ano
2013
Provas
Disciplina
Banco de Dados
Assuntos

Em PL/SQL operações lógicas podem ser efetuadas com os operadores OR, AND e NOT. Considere operações lógicas, abaixo.

I. FALSE AND NULL

II. TRUE AND NULL

Essas operações resultarão, respectivamente, em

Alternativas
Comentários
  • Analisando-se a tabela de operadores lógicos, temos como resposta a alternativa E. Vale lembrar que o operador AND retorna TRUE somente se ambos os valores forem True, enquanto que OR retorna TRUE se um dos valores dor True. 

    AND TRUE FALSE NULL TRUE TRUE FALSE NULL FALSE FALSE FALSE FALSE NULL NULL FALSE NULL OR TRUE FALSE NULL TRUE TRUE TRUE TRUE FALSE TRUE FALSE NULL NULL TRUE NULL NULL
  • Só pra complementar, isso se chama Lógica ternária (ou lógica trivalente), que no caso, alem dos valores true e false tem um terceiro valor, o NULL.
  • Note the spelling is ElsIF not ElseIF which you might expect from other languages. 

    'condition' may include logical comparisons...

    true AND true = true...
    true OR true = true...
    
    false AND false = false...
    false OR false = false...
    
    null AND null = null...
    null OR null = null...
    
    true AND false = false...
    true OR false = true...
    
    true AND null = null...
    true OR null = true...
    
    false AND null = false...
    false OR null = null...
    
    NOT TRUE = FALSE...
    NOT FALSE = TRUE...
    NOT NULL = NULL...

  • Para saber o resultado da operação lógica  com o "NULL", deve-se verificar se é preciso saber o valor de "NULL" para determinar o resultado da expressão.

    false AND null = false... >> o operador AND só retorna True se ambos os valores forem TRUE.  Independente do valor de NULL, é possível determinar o resultado da expressão, já que um dos valores é FALSE.
    true AND null = null... >> o operador AND só retorna True se ambos os valores forem TRUE.  Como não sei o valor de NULL,  não tenho como saber o resultado da expressão.

    If A is NULL, then:           Is:             Because:
    not A                               NULL        If A is unknown, its inverse is also unknown.
    A or false                        NULL        “A or false” always has the same value as A – which is unknown.
    A or true                         true           “A or true” is always true – A's value doesn't matter.
    A or A                             NULL         “A or A” always equals A – which is NULL.
    A and false                     false          “A and false” is always false – A's value doesn't matter.
    A and true                      NULL          “A and true” always has the same value as A – which is unknown.
    A and A                          NULL          “A and A” always equals A – which is NULL.



ID
1028731
Banca
FEPESE
Órgão
JUCESC
Ano
2013
Provas
Disciplina
Banco de Dados
Assuntos

A palavra reservada utilizada em PL/SQL para referenciar campos específcos que devem disparar uma trigger de UPDATE é:

Alternativas
Comentários
  • CREATE OR REPLACE
    TRIGGER trg_salarios2
    BEFORE UPDATE OF salary ON employee
    FOR EACH ROW
    DECLARE
        too_much EXCEPTION;
    BEGIN
    IF :NEW.salary>99000 THEN
        RAISE too_much;
    END IF;
    EXCEPTION
        WHEN too_much THEN
        RAISE_APPLICATION_ERROR (-20001,'Cannot pay that much');
    END;
  • b-

    como o colega notou, on é antes de tabela. Of, antes de coluna. Sintaxe típica:

    create or replace trigger nomeDoTrigger

    tempo(BEFORE/AFTER) evento(INSERT/UPDATE/DELETE) or (se houver outros) nomeTabela;


ID
1028743
Banca
FEPESE
Órgão
JUCESC
Ano
2013
Provas
Disciplina
Banco de Dados
Assuntos

Assinale a alternativa que indica corretamente o comando PL/SQL que lista os atributos com respecti- vos tipos de dados de uma dada tabela.

Alternativas
Comentários
  • O comando usado é o DESCRIBE.
    Use o comando DESCRIBE parc exibir esta estrutura.
     
    DESC [RIBE] nome da tabela.
     
    Ex.:
     
    Desc dept
     
    Name               Null?               Type
    -----------------  ----------------    -------------------------
    DEPTNO          NOT NULL        NUMBER(2)
    DNAME                                    VARCHAR2(14)
    LOC                                         VARCHAR2(13)
     
    Acima está a estrutura da tabela dept.  No resultado:
     
    Null?             Indica se a coluna deve conter dados;  NOT NULL indica que uma coluna deve conter dados.
    Type             Exibe o tipo de dado de uma coluna
     
    Os tipos de dados são descritos na tabela a seguir:
     

    Tipo de dado

    Descrição
    NUMBER(P,S) Valor numérico que possui um número máximo de dígitos P, o número de dígitos à direita do ponto decimal  S.
    VARCHAR2(S) Valor de caracteres com comprimento variável do tamanho máximo S.
    DATE Valor de data e hora entre 1 de janeiro, 4712 A.C. e 31 de dezembro de 9999 D.C.
    CHAR(S) Valores de caracteres com comprimento fixo do tamanho S.
     
  • e-

    describe ou desc exibe a estrutura da tabela,mostrando o tipo de dados e se podem conter valores nulos (nulos)

  • Também errei por isso!

  • A alternativa não menciona Webmail.


ID
1028746
Banca
FEPESE
Órgão
JUCESC
Ano
2013
Provas
Disciplina
Banco de Dados
Assuntos

Assinale a alternativa que indica uma forma válida de tratar exceções em PL/SQL, considerando as pala- vras-chave necessárias para tal, na sequência correta.

Alternativas
Comentários
  • A sequência correta é:  BEGIN > EXCEPTION > END. Como mostrado na imagem.
    Bloco para Tratamento de Exceções
    Fonte: http://www.devmedia.com.br/tratamento-de-excecoes-de-sistema-na-linguagem-pl-sql/26001

ID
1028797
Banca
FEPESE
Órgão
JUCESC
Ano
2013
Provas
Disciplina
Banco de Dados
Assuntos

O comando SELECT FOR UPDATE do PL/SQL permite a atualização de registros enquanto são listados. Selecione a alternativa que descreve corretamente o tipo de lock (bloqueio) realizado por padrão por este comando.

Alternativas

ID
1043869
Banca
CESPE / CEBRASPE
Órgão
MPU
Ano
2013
Provas
Disciplina
Banco de Dados
Assuntos

A respeito de banco de dados, julgue os itens subsequentes.


PL/SQL é uma linguagem de programação que permite a inclusão de unidades de programa no SGBD para a manipulação de dados.

Alternativas
Comentários
  • http://pt.wikipedia.org/wiki/PL/SQL Acesso (05/01/2014)


    http://www.linhadecodigo.com.br/artigo/335/pl_sql-procedures-e-funcoes.aspx Acesso (05/01/2014)

  • PL/SQL (Linguagem Procedural) é uma linguagem de programação baseada em opções monográficas de edição. Ela é composta por três camadas, definição, edição, e conclusão.

  • c-

    PL-SQL é uma extensão à lingaugem SQL, podendo usar todos seus comandos (select, update etc). Trata-se de uma linguagem procedural e estruturada com hierarquia de comandos e fluxo de execução.

  • PL/SQL é uma extensão da linguagem padrão SQL para o SGBD Oracle da Oracle Corporation. É uma linguagem procedural da Oracle que estende a linguagem SQL. Permite que a manipulação de dados seja incluída em unidades de programas


ID
1047232
Banca
CESPE / CEBRASPE
Órgão
MPU
Ano
2013
Provas
Disciplina
Banco de Dados
Assuntos

Com relação a linguagens de bancos de dados, julgue os itens subsecutivos

Em PL/SQL, parâmetros cujo tipo não esteja explicitamente declarado são considerados como do tipo IN.

Alternativas
Comentários
  • Questão correta. É preciso ter atenção acessar a memória e lembrar que IN e OUT são parâmetros de entrada e saída e quando não estão explicitamente declarados o IN (entrada) vem por padrão.

    Ex.: 
    PROCEDURE double (original IN VARCHAR2, <-- Neste caso não precisaria ter o IN, pois já é default
    new_string OUT VARCHAR2)
  • Na boa, essa não deu para engolir!

    Uma coisa é tipo de uma variável e a outra é modo/comportamento de uma variável. 
    The mode of a formal parameter determines its behavior. It could be IN, OUT or IN OUT.
    IN: Passes a value to the subprogram (default value)
    OUT:Returns a value to the invoker.
    IN OUT: Passes an initial value to the subprogram and returns an updated value to the invoker.
    Tipo IN, essa é boa! Tipo é NUMBER(2), CHAR (40)! 
    Se eu tivesse feito essa prova, já era um recurso montado! kkk
    Bons estudos.

ID
1047235
Banca
CESPE / CEBRASPE
Órgão
MPU
Ano
2013
Provas
Disciplina
Banco de Dados
Assuntos

Com relação a linguagens de bancos de dados, julgue os itens subsecutivos

Tratando-se da linguagem procedural PL/MySQL, é necessária a utilização de cursores para atribuir a uma variável o resultado de consultas que produzam uma lista de valores

Alternativas
Comentários
  • Questão correta! Vejamos um exemplo:

    DECLARE

      CURSOR C1 IS // C1 é um CURSOR

      SELECT COD, NOME FROM EMPRESA;

    BEGIN

      FOR REC IN C1Procedural Language / SQL

      LOOP

        INSERT INTO NOVA_EMPRESA(COD, NOME)

        VALUES (REC.COD, REC.NOME);

      END LOOP;

      COMMIT

    END;


    No exemplo acima, REC é uma variável que somente pode ter seus valores atribuídos com a utilização de uma estrutura de cursor para que a lista de valores retornados pela consulta pudesse ser ser manipulada.

    Bons estudos!

  • Cespe sempre inventando novos conceitos.

    Em que planeta existe PL/MySQL? Vai para o banco de jurisprudencias.

  • Por essas e outras que a Cespe não tem capacidade de fazer uma prova decente de concurso.


ID
1055479
Banca
CESPE / CEBRASPE
Órgão
STF
Ano
2013
Provas
Disciplina
Banco de Dados
Assuntos

Julgue o item seguinte, a respeito do PL/SQL.

O gatilho é um tipo especializado de bloco de código PL/SQL extremamente útil em um ambiente distribuído, para simular um relacionamento de chave estrangeira entre tabelas que não existem no mesmo banco de dados.

Alternativas
Comentários
  •  

    Este procedimento é utilizado para fazer com que o trigger garanta a integridade referencial entre tabelas, utilizando verificações, através de consultas (selects), para saber, por exemplo, se um determinado dado existe ou não na tabela e assim realizar a sua exclusão. 

    No MEU ponto de vista, isso é uma "bela" de uma gambiarra, pois deixa a integridade de um banco de dados dependente de códigos escritos em triggers que podem ou não estarem corretos, triggers estas que por sinal pode estar desabilitadas, sem contar os problemas de desempenho acarretados por essa “solução”. Uma série de problemas ocorrem quando tentamos simular a integridade através desse subterfúgio. Existem algumas soluções para atender a esse requisito, entre elas a escolha correta do SGBD para o tipo de sistema que irá utilizá-lo, outra solução é a criação de um banco de dados, modelado corretamente, para uma solução corporativa.

     

     

     

  • pra mim isso seria uma das formas de se utilizar Trigger, do jeito que eu interpretei a questão, deu a entender que essa era A funcionalidade principal de uma trigger

  • é.. não tem jeito mesmo.. erro essa questão toda vez que a faço

  • Esta questão parece ter sido retirada do Livro : Oracle Database 10g - Manual Do Dba ; Autor :  KEVIN LONEY,BOB BRYLA , pág. 28:

     

    " Gatilhos são extremamente úteis em ambientes distribuídos para simular um relacionamento de chave estrangeira entre tabelas que não existem no mesmo banco de dados ."

     

    Veja em : "

    "https://books.google.com.br/books?id=3I5Vo93gm1gC&pg=PA28&lpg=PA28&dq=gatilho+é+um+tipo+especializado+de+bloco+de+código+

    PL/SQL&source=bl&ots=YwS4nmcsYv&sig=Nhu4Gsa3lablXXl8XdhFq0z2Db4&hl=pt-BR&sa=X&ved=0ahUKEwi5j_XNnuDRAhVFS5AKHbj3A50Q6AEIITAB#

    v=onepage&q=gatilho%20é%20um%20tipo%20especializado%20de%20bloco%20de%20código%20PL%2FSQL&f=false"

     

     

  • c-

    De acordo com a literatura da área, entres as vantages do trigger estao:

    - auditoria e examinação de valores no server: examina recuperações, caminhos, habilitação e desabilitacao do audit;

    -forçar integridade dos dados i.e.: condição estática que deve ser valida, produzir 

    -forção integridade referencial

    -derivar dados i.e.: calcular colunas derivadas assincronamente;

    - réplica de tabelas (snapshot)

    Abaixo um exemplo de trigger que possibilita uma restrição que nao seria possível com o típíco check constraint:

    https://stackoverflow.com/questions/5332562/using-date-in-a-check-constraint-oracle

  • POG (programação orientada a gambiarra).

  • não pode ser mano, trigger pra foreign key?

    muuuuito POG