Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Como declaro e uso variáveis ​​em PL/SQL como faço em T-SQL?


Resposta revisada

Se você não estiver chamando esse código de outro programa, uma opção é pular o PL/SQL e fazê-lo estritamente em SQL usando variáveis ​​de ligação:
var myname varchar2(20);

exec :myname := 'Tom';

SELECT *
FROM   Customers
WHERE  Name = :myname;

Em muitas ferramentas (como Toad e SQL Developer), omitir o var e exec instruções farão com que o programa solicite o valor.

Resposta original

Uma grande diferença entre T-SQL e PL/SQL é que o Oracle não permite que você retorne implicitamente o resultado de uma consulta. O resultado sempre deve ser retornado explicitamente de alguma forma. A maneira mais simples é usar DBMS_OUTPUT (aproximadamente equivalente a print ) para gerar a variável:
DECLARE
   myname varchar2(20);
BEGIN
     myname := 'Tom';

     dbms_output.print_line(myname);
END;

No entanto, isso não é muito útil se você estiver tentando retornar um conjunto de resultados. Nesse caso, você desejará retornar uma coleção ou um refcursor. No entanto, usar qualquer uma dessas soluções exigiria envolver seu código em uma função ou procedimento e executar a função/procedimento de algo capaz de consumir os resultados. Uma função que funcionou dessa maneira pode ser algo assim:
CREATE FUNCTION my_function (myname in varchar2)
     my_refcursor out sys_refcursor
BEGIN
     open my_refcursor for
     SELECT *
     FROM   Customers
     WHERE  Name = myname;

     return my_refcursor;
END my_function;