AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / dba / Perguntas / 1121
Accepted
Lazer
Lazer
Asked: 2011-02-08 09:49:44 +0800 CST2011-02-08 09:49:44 +0800 CST 2011-02-08 09:49:44 +0800 CST

Como diferenciar entre SQL e PL/SQL?

  • 772

Eu sei que a pergunta pode parecer muito estúpida, mas nunca entendi essa parte.

O SQL*Plus funciona com SQL e PL/SQL. Como sei se algum código é SQL ou PL/SQL? Se meu código tiver um loop for, não é mais SQL?

PL/SQL é uma extensão para SQL ter loops, condicionais etc. Então qualquer código SQL é por padrão código PL/SQL? Não é assim?

Existe uma demarcação entre SQL e PL/SQL?

Dois exemplos de diferenciação b/w SQL e PL/SQL que desencadearam esta questão:

Qual é a diferença entre essas duas instruções create table?

https://stackoverflow.com/questions/2267386/oracle-11g-varray-of-objects/2267813#2267813

oracle oracle-11g-r2
  • 3 3 respostas
  • 14515 Views

3 respostas

  • Voted
  1. Gaius
    2011-02-08T11:38:47+08:002011-02-08T11:38:47+08:00

    Se estiver embrulhado

    • BEGIN...END
    • DECLARE...END
    • CREATE OR REPLACE...END
    • É um prefixo de uma linhaEXECUTE

    Então é PL/SQL. O que isso significa sob o capô? O SQL é "compilado" para um plano de consulta e executado, retornando imediatamente um conjunto de resultados em caso de SELECTou o número de linhas afetadas em outros casos ou um erro. PL/SQL, entretanto, está mais envolvido. Cada objeto referenciado nele é verificado quanto à existência e às concessões necessárias, então o PL/SQL é compilado para um código quase nativo , que é executado em velocidade total. As dependências são rastreadas e, se uma tabela for alterada, qualquer referência PL/SQL a ela exigirá recompilação. A razão para isso é a velocidade; como tudo é feito antecipadamente em tempo de compilação, não há necessidade de nenhuma verificação de tempo de execução em PL/SQL, enquanto as instruções SQL devem ser verificadas todas as vezes (mesmo que os planos de consulta sejam armazenados em cache, a chamada análise suave, os privilégios ainda devem ser verificados e até mesmo uma análise suave tem um custo associado a ela).

    Esta é uma das "vantagens matadoras" dos procedimentos armazenados como o Oracle os faz; na verdade, a execução de um procedimento ou gatilho armazenado em PL/SQL faz a quantidade mínima absoluta de computação para obter o resultado. O código do aplicativo executado fora do kernel do Oracle, onde não é confiável, precisa passar por mais obstáculos para obter os dados. É o mesmo argumento para linguagens de alto nível fortemente tipadas e referencialmente transparentes, como OCaml ou Haskell - faça mais trabalho uma vez, em tempo de compilação, e colha os benefícios nos milhões de vezes que o código é executado.

    • 12
  2. Best Answer
    ScottCher
    2011-02-08T12:34:25+08:002011-02-08T12:34:25+08:00

    É uma pergunta interessante, com certeza. A maioria das pessoas familiarizadas com o desenvolvimento do Oracle não pensaria nisso, mas quando você chega a isso, às vezes é confuso definir a demarcação entre SQL e PL/SQL.

    Olhando para a definição das siglas, você começa a ter uma ideia de quais áreas de funcionalidade cada uma cobre:

    SQL - Linguagem de consulta estruturada

    PL/SQL - Linguagem Processual / Linguagem de Consulta Estruturada

    O leitor atento pode perceber como o SQL aparece duas vezes 8) Isso ocorre porque o SQL geralmente é incorporado ao PL/SQL - PL/SQL é uma linguagem criada para fornecer uma linguagem proprietária de 4ª geração (4GL) que funciona muito bem com objetos de banco de dados em Oráculo.

    A Wikipédia tem um material muito bom sobre SQL e PL/SQL

    A parte confusa é onde PL/SQL e SQL se sobrepõem um pouco. A abrangência do SQL inclui inserção, consulta, atualização e exclusão de dados, as chamadas DML, ou operações de linguagem de manipulação de dados, mas também inclui criar, alterar, renomear, descartar, que são DDL ou operações de linguagem de definição de dados. É aqui que alguns podem ficar confusos. A operação para criar um procedimento armazenado, algo escrito usando PL/SQL, na verdade é SQL - você usa SQL para criar o objeto de banco de dados que representa um bloco de PL/SQL.

    Da mesma forma, você pode incorporar código SQL dentro de seu PL/SQL. Um loop FOR em PL/SQL pode ser baseado em uma consulta SQL, por exemplo. Explode sua mente um pouco, hein? Você cria um procedimento usando SQL que, na verdade, usa SQL internamente para executar alguma ação nos registros do banco de dados.

    Coisas legais, se você me perguntar.

    • 12
  3. jcolebrand
    2011-02-08T18:51:17+08:002011-02-08T18:51:17+08:00

    Existe uma demarcação entre SQL e PL/SQL?

    SQL é um padrão*.

    PL/SQL é uma extensão de fornecedor para o padrão SQL*.

    *SQL é uma linguagem que possui uma gramática explícita e regras sobre como essa gramática deve ser implementada e é , mas não é um padrão per se . No entanto, como existe uma especificação de linguagem com a qual todos podem concordar, qualquer coisa escrita em SQL seria portátil se o programa fosse escrito apenas em SQL.

    Mas como o PL/SQL é uma extensão do fornecedor, ele terá partes de linguagem que outros fornecedores podem não suportar.

    • 5

relate perguntas

  • Backups de banco de dados no Oracle - Exportar o banco de dados ou usar outras ferramentas?

  • ORDER BY usando prioridades personalizadas para colunas de texto

  • Interface sqlplus confortável? [fechado]

  • Como encontrar as instruções SQL mais recentes no banco de dados?

  • Como posso consultar nomes usando expressões regulares?

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Como você mostra o SQL em execução em um banco de dados Oracle?

    • 2 respostas
  • Marko Smith

    Como selecionar a primeira linha de cada grupo?

    • 6 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Posso ver Consultas Históricas executadas em um banco de dados SQL Server?

    • 6 respostas
  • Marko Smith

    Como uso currval() no PostgreSQL para obter o último id inserido?

    • 10 respostas
  • Marko Smith

    Como executar o psql no Mac OS X?

    • 11 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Marko Smith

    Passando parâmetros de array para um procedimento armazenado

    • 12 respostas
  • Martin Hope
    Manuel Leduc Restrição exclusiva de várias colunas do PostgreSQL e valores NULL 2011-12-28 01:10:21 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Stuart Blackler Quando uma chave primária deve ser declarada sem cluster? 2011-11-11 13:31:59 +0800 CST
  • Martin Hope
    pedrosanta Listar os privilégios do banco de dados usando o psql 2011-08-04 11:01:21 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST
  • Martin Hope
    BrunoLM Guid vs INT - Qual é melhor como chave primária? 2011-01-05 23:46:34 +0800 CST
  • Martin Hope
    bernd_k Quando devo usar uma restrição exclusiva em vez de um índice exclusivo? 2011-01-05 02:32:27 +0800 CST
  • Martin Hope
    Patrick Como posso otimizar um mysqldump de um banco de dados grande? 2011-01-04 13:13:48 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve