Estou dando uma lida sobre este assunto de variáveis…
Aquelas que vc usa o & na frente do nome para carregar. E como de praxe eu estava pensando errado sobre esse ilustre operador.
Quando usamos a seguinte query:
SELECT * FROM USER_TABLES WHERE TABLE_NAME LIKE ‘%&NOME%’
o ORACLE pedirá o valor da variavel NOME
agora se fizermos:
SELECT u.*,’&NOME’ FROM USER_TABLES u WHERE u.TABLE_NAME LIKE ‘%&NOME%’
ele solicitará 2 vezes!
agora vc pergunta, pô Dartanghan e se eu tiver 234987623892346 vezes esse troço no meu código? vou ter que digitar sempre?
e a maravilhosa resposta é NÃO!
os caras da Oracle pensaram ( 🙂 ) e criaram o && que significa que o valor que vc utilizar na variavel com && será usado para todas as variaveis com o mesmo nome definido por &. Confuso?
Vou tentar demonstrar.
Se fizermos a query:
SELECT u.*,’&&NOME’ FROM USER_TABLES u WHERE u.TABLE_NAME LIKE ‘%&NOME%’ AND LENGTH( u.TABLE_NAME ) > LENGTH ( ‘&NOME’ )
O Oracle vai pedir apenas uma vez o valor do &NOME e aplicará a todos os &NOME s da sua query
Agora a pegadinha!
Algumas pessoas ( eu ) achavam que o &&VARIAVEL significava &VALOR_VARIAVEL, mas na verdade:
Se &VARIAVEL = ‘OI’ , &&VARIAVEL != &OI.
Bem … agora vamos voltar aos estudos… qualquer coisa posto aqui. 🙂