sql >> Database teknologi >  >> RDS >> Oracle

Hvordan erklærer og bruger jeg variabler i PL/SQL, som jeg gør i T-SQL?

Revideret svar

Hvis du ikke kalder denne kode fra et andet program, er en mulighed at springe PL/SQL over og gøre det strengt i SQL ved hjælp af bindevariabler:

var myname varchar2(20);

exec :myname := 'Tom';

SELECT *
FROM   Customers
WHERE  Name = :myname;

I mange værktøjer (såsom Toad og SQL Developer), udelades var og exec sætninger vil få programmet til at bede dig om værdien.

Originalt svar

En stor forskel mellem T-SQL og PL/SQL er, at Oracle ikke lader dig implicit returnere resultatet af en forespørgsel. Resultatet skal altid udtrykkeligt returneres på en eller anden måde. Den enkleste måde er at bruge DBMS_OUTPUT (svarende omtrent til print ) for at udlæse variablen:

DECLARE
   myname varchar2(20);
BEGIN
     myname := 'Tom';

     dbms_output.print_line(myname);
END;

Dette er dog ikke særlig nyttigt, hvis du forsøger at returnere et resultatsæt. I så fald vil du enten returnere en samling eller en refcursor. Brug af en af ​​disse løsninger vil dog kræve, at du pakker din kode ind i en funktion eller procedure og kører funktionen/proceduren fra noget, der er i stand til at forbruge resultaterne. En funktion, der fungerede på denne måde, kan se sådan ud:

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;


  1. Sådan opretter du historik ELLER reviderer visninger fra Change Data Capture (CDC) tabeller i SQL Server - SQL Server Tutorial

  2. Sådan viser du kommentarer til en kolonne med desc-operation

  3. Sammenkæd og grupper flere rækker i Oracle

  4. Oprettelse af en database i Cloud Sites