A linguagem SQL (Structured Query Language) é um padrão em bancos de dados relacionais. Ela é uma linguagem de domínio específico (DSL – Domains Specific Language), isto é, ela foi criada com o propósito específico de manipular objetos em bancos de dados relacionais. Também é uma linguagem declarativa. Isto significa que os “programas” (scripts) em SQL se preocupam em definir o “que” e não o “como”.

A linguagem SQL é dividida em sublinguagens, de acordo com o tipo de operação executada. A divisão mais granular define 5 sublinguagens:

●        DDL (Data Definition Language) – Utilizada na manipulação (criação, alteração, exclusão) de objetos do banco de dados (comandos CREATE, ALTER e DROP);

●        DML (Data Manipulation Language) – Utilizada para manipulação do conteúdo de objetos do banco de dados, ou seja, os dados propriamente ditos (comandos INSERT, UPDATE e DELETE);

●        DQL (Data Query Language) – Utilizada na consulta dados (comando SELECT);

●        TCL (Transaction Control Language) – Utilizada no controle de transações (comandos SET TRANSACTION, START TRANSACTION, COMMIT, ROLLBACK e SAVEPOINT);

●        DCL (Data Control Language) – Utilizada no controle da segurança dos dados, atribuindo permissões e privilégios de usuários (comandos GRANT, REVOKE e DENY).

Pelo fato de ter sido desenvolvida especificamente para “rodar” em um SGBDR, a linguagem PL/SQL se integra de forma muito natural com SQL. No entanto, algumas restrições se aplicam. Comandos DDL, utilizados na criação, alteração e exclusão de objetos, não são permitidos em programas PL/SQL.¹ Já os comandos DML e DQL, os mais utilizados no desenvolvimento de aplicações, são permitidos.

INCLUSÃO DE REGISTROS

O comando INSERT é utilizado para a inserção de novos registros em uma tabela. Sua forma geral é:

A relação (coluna1coluna2, …) é opcional. Quando ela é utilizada, não é necessário colocar os nomes de todas as colunas, mas apenas daquelas que receberão valores (as demais recebem os valores padrão ou NULL). Agora, quando não utilizada, devem ser fornecidos valores para todas as colunas, na ordem em que estão na tabela. O exemplo a seguir ilustra a utilização do comando INSERT em uma procedure. (os scripts SQL para a criação das tabelas encontram-se no material de apoio).

A mensagem ‘Inclusão bem sucedida.’ é exibida após a execução do bloco anônimo.

É possível a utilização do tipo RECORD no lugar dos campos individuais da tabela FILMES tanto na passagem de parâmetros quanto no comando INSERT. A procedure inclui_filme será colocada dentro da package pkg_filmes. Além disto, o tratamento de exceções foi alterado a fim de retornar ao programa chamador o código e a mensagem de erro. A seguir, a versão modificada do exemplo anterior.

Observe que, na package, os tipos dos campos do RECORD foram definidos de forma diferente. Esta forma é chamada **ancoragem de tipo ****e é mais uma boa característica da linguagem PL/SQL, dentro da filosofia orientada a modularidade e de esconder do desenvolvedor detalhes desnecessários. Como cada campo do RECORD corresponde a um campo da tabela, nada mais lógico do que atribuir ao primeiro o mesmo tipo do segundo. A forma geral é tabela.campo%TYPE. Recomenda-se que a ancoragem de tipos sempre que possível.

O bloco anônimo e o resultado exibido após sua execução são mostrados a seguir.

ALTERAÇÃO DE REGISTROS