sql >> Databasteknik >  >> RDS >> Oracle

Hur deklarerar och använder jag variabler i PL/SQL som jag gör i T-SQL?

Reviderat svar

Om du inte anropar den här koden från ett annat program är ett alternativ att hoppa över PL/SQL och göra det strikt i SQL med bindningsvariabler:

var myname varchar2(20);

exec :myname := 'Tom';

SELECT *
FROM   Customers
WHERE  Name = :myname;

I många verktyg (som Toad och SQL Developer), utelämna var och exec satser kommer att få programmet att fråga dig om värdet.

Originalt svar

En stor skillnad mellan T-SQL och PL/SQL är att Oracle inte låter dig implicit returnera resultatet av en fråga. Resultatet måste alltid uttryckligen returneras på något sätt. Det enklaste sättet är att använda DBMS_OUTPUT (ungefär motsvarande print ) för att mata ut variabeln:

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

     dbms_output.print_line(myname);
END;

Detta är dock inte särskilt användbart om du försöker returnera en resultatuppsättning. I så fall vill du antingen returnera en samling eller en refkursor. Men att använda någon av dessa lösningar skulle kräva att du packar in din kod i en funktion eller procedur och kör funktionen/proceduren från något som kan konsumera resultaten. En funktion som fungerade på detta sätt kan se ut ungefär så här:

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. Hur visar jag de senaste frågorna som kördes på MySQL?

  2. Hämta data från MySQL-databasen till html-rullgardinslistan

  3. Vad är poängen med Initial Catalog i en SQL Server-anslutningssträng?

  4. Främmande nyckel till icke-primär nyckel