Evviva, aleluia, hosanas!! Eis que surge um/uma desenvolvedor/a que ao
menos já ouviu falar em bind variables, não estamos pregando no
deserto nesses quase 3 anos de grupo oracle...

 Seguinte, primeiro vamos mostrar o que são as danadas : imagine que
vc tem um SQL que se repetirá várias vezes no decorrer da sua
aplicação (um SELECT pra buscar o nome de departamenteo, digamos), e a
cada vez vc o vai executar com um argumento (o código do departamento,
digamos) diferente - o texto do SQL é o mesmo, mas o valor muda. Se o
seu programa enviar pro banco Oracle :

SELECT nnnn FROM tabela WHERE cod = 45;

depois 

SELECT nnnn FROM tabela WHERE cod = 50;

e depois 

SELECT nnnn FROM tabela WHERE cod = 10; 

esses 3 SQLs são absolutamente DIFERENTES pro otimizador Oracle, então
CADA UM deles foi "compilado" separadamente, gastou CPU, ocupou áreas
diferentes do cache de SQLs do banco... Já se vc "pedisse" pro banco
criar uma variável (digamo, X) e vc executasse 3 vezes o texto abaixo :

SELECT nnnn FROM tabela WHERE cod = :X ;

só passando valores diferentes para X , o texto é sempre o mesmo,
então esse SQL foi "compilado" SÓ UMA única vez na primeira execução
(a segunda e a terceira rodaram do cache), o SQL está ocupando APENAS
uma área de memória, logicamente é MUITO mais eficiente ... Essa
variável X , fixa no texto do SQL, é a chamada BIND VARIABLE.

E como vc usa essa maravilha ?? Em não sendo uma linguagem/tool que
faça automaticamente isso (como o Oracle Forms faz) - é o que ocorre
com o Delphi - aí a primeira possibilidade é vc, AO INVÉS de manter o
textos dos seus SQLs no programa delphi, vc criar PROCEDURES/PACKAGES
em PL/SQL que façam os comandos SQL desejados, dentro do banco, e a
partir do seu programa Delphi vc só chama as proceds/packages. Em
sendo SQL estático (não-dinâmico), a PL/SQL já faz uso de variáveis
BIND automagicamente, nada é exigido. Isso tem os seus defensores
ardorosos, até entre alguns gurus Oracle, pois além do bind automático
 esse método te dá uma flexibilidade total de front-end : estando a
camada SQl dentro do banco, se amanhã vc quiser trocar o front-end, ou
se precisar fazer os mesmos procedimentos em outro sistema, é
transparente pro banco, uma proced/package Oracle pode ser chamada,
SEM MUDANÇA nenhuma nela, a partir de delphi, de cobol, de vb, de C, e
n outras menos votadas. Com isso vc também ganha vantagem na
flexibilidade de manutenção : caso uma rotina de consulta (digamos)
esteja com problemas de performance, ou tenha que ser alterada
logicamente, vc simplesmente altera & recompila a proced/package e
pronto, não precisou tocar numa linha do programa front-end.

A segunda possibilidade, se vc quiser manter o SQL dentro do programa
delphi, exige que vc use a sintaxe/método apropriado, o que VAI VARIAR
de aacordo com o programa/middleware usado pra conectar com o banco,
que pode ser ODBC, OLEDB/ADO, soft/métodos do próprio delphi (em
algumas versões ele traz coisas nesse sentido), OU ainda
drivers/métodos de terceiros, como o DOA (Direct Oracle Access) em
http://www.allroundautomations.nl

 Já que depende do que vc usa pra conectar nesta segunda opção, se for
isso que vc pretende, recomendo : mande outro e-mail dizendo
EXATAMENTE qual é a versão do Delphi, sistema operacional usado,
versão do banco, método/soft de acesso ao banco, E um trecho curto de
como vc hoje monta e envia pro banco os seus SQLs, que a gente pode te
dar uma resposta mais específica - o meu conhecimento de Delphi é
ridiculamente pequeno, mas aqui na lista sei que existem profissionais
delphi, que com certeza podem dar uma colaboração.

[]s

 Chiappa

 lógica   vc tem duas possibilidades : Há linguagens/tools que
automaticamente já fazem isso


--- Em oracle_br@yahoogrupos.com.br, "Daniela Fumes"
<[EMAIL PROTECTED]> escreveu
> Olá a todos!
> 
> Meu nome é Daniela, sou nova por aqui e estou em busca de 
> esclarecimentos sobre o uso de 'bind variables'.
> Na empresa onde trabalho temos um sistema em oracle com interface 
> delphi e precisamos MUITO otimizar alguns processos e a recomendação 
> foi o uso de bind.
> 
> Vcs podem me ajudar?
> 
> Agradeço a atenção!
> 
> Daniela




ORACLE_BR APOIA 2ºENPO-BR 
_____________________________________________________________________
O 2º Encontro Nacional de Profissionais Oracle será realizado no dia 05/11/2005 
no auditório da FIAP em São Paulo. Serão apresentadas Palestras e Cases 
dirigidos exclusivamente por profissionais especialistas e renomados no 
mercado. Confira a programação no site do evento! http://www.enpo-br.org/
_____________________________________________________________________
 
Links do Yahoo! Grupos

<*> Para visitar o site do seu grupo na web, acesse:
    http://br.groups.yahoo.com/group/oracle_br/

<*> Para sair deste grupo, envie um e-mail para:
    [EMAIL PROTECTED]

<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
    http://br.yahoo.com/info/utos.html

 




Responder a