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 SQL possibilitando 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.

Há uma semelhança muito grande de uma mesma instrução SQL elaborada com variáveis de ligação ou valores fixos ambos usados como parâmetros. Mas a semelhança é só na escrita dos comandos ou instruções SQL. Na verdade a diferença existe na execução destes comandos no servidor de banco de dados.

Quando uma instrução SQL é elaborada com variável de ligação ocorre apenas a leitura e substituição do valor atribuído à variável de ligação, e caso a instrução SQL já esteja na memória do servidor de banco de dados ocorre o retorno ou atualização dos dados, sem ter que passar pelas etapas de preparação e execução da instrução, ou seja, com o uso de variáveis de ligação é permitido o reuso de instruções SQL já armazenadas em memória. Se uma instrução SQL for executada através de parâmetros com valores fixos ou strings concatenadas através de alguma linguagem de programação, o servidor de banco de dados irá sempre refazer e executar sempre uma nova instrução SQL.

É bom lembrar que parâmetros usados em instruções SQL podem ser valores fixos, variáveis concatenadas através de alguma linguagem de programação e também variáveis de ligação.

É possível definir variável de ligação de diversas maneiras. Serve de ponte para a execução de uma instrução SQL já preparada na memória do servidor, onde são enviados apenas os valores nela contidos.

O uso dessas variáveis no desenvolvimento de sistemas de informação permite maior segurança e eficiência na manipulação de dados, sendo suportadas pela maioria das linguagens de programação, entre elas o Visual Basic, C++ Builder e Java. Alguns sistemas gerenciadores de banco de dados também permitem o uso de variáveis de ligação na construção de funções e procedimentos armazenados (stores procedures), como por exemplo, o Oracle.

O foco deste artigo é conceituar e exemplificar o uso de variáveis de ligação utilizando o SGBD Oracle através de sua linguagem PL/SQL, e também através da linguagem Java.

Para os exemplos apresentados nesse artigo, utilizaremos o modelo de dados apresentado na figura 1.

Modelo-de-dados-usado-nos-exemplos-e-listagens-citadas-ao-longo-do-artigo
Figura 1. Modelo de dados usado nos exemplos e listagens citadas ao longo do artigo.

Memória compartilhada no Oracle

A estrutura de memória compartilhada, ou shared pool, contém informações usadas para executar comandos SQL. Essa estrutura é formada por áreas reservadas na memória, denominadas shared SQL e Data Dictionary.

A área identificada como shared SQL contém:

  • O texto dos comandos SQL;
  • A interpretação dos comandos SQL;
  • O plano de execução para os comandos SQL.

O compartilhamento dos planos de execução dos diversos comandos nessas áreas de memória otimiza o uso da memória, uma vez que as definições dos comandos podem ser compartilhadas entre as diversas aplicações.

...
Quer ler esse conteúdo completo? Tenha acesso completo