Nogle svar kan fortælle dig, at Oracle har tabelvariabler, og det gør det til en vis grad. De fleste svar vil dog fortælle dig, at du slet ikke burde gøre dette i Oracle; det er simpelthen ikke nødvendigt.
I dit tilfælde ville jeg blot bruge en CTE:
with users as (
select 1001 as ID, 'Bob' as Name, 25 as Age, 'M' as Gender from dual
union
select 1021 as ID, 'Sam' as Name, 29 as Age, 'F' from dual
)
, grades as (
select 1001 as UserID , 120 as ClassID, 4 as Grade from dual
Union
select 1001 as UserID , 220 as ClassID, 2 as Grade from dual
Union
select 1021 as UserID , 130 as ClassID, 4 as Grade from dual
Union
select 1021 as UserID , 230 as ClassID, 4 as Grade from dual
Union
select 1021 as UserID , 340 as ClassID, 2 as Grade from dual
)
select u.ID, u.Name, AVG(g.grade) as gpa
from users u
join grades g on u.ID = g.UserID
group by u.ID, u.Name
OPDATERING:Det svar, jeg har forsøgt at få i lang tid, er i Bens kommentar nedenfor, som jeg inkluderer her:"Der er ingen variabel, som du kan oprette på farten og forbinde til andre tabeller i standard SQL @wcm, ja Der er en række forskellige typer objekter, der kan oprettes, som giver dig mulighed for at gøre dette, men ikke nøjagtigt, som du ville gøre i T-SQL."