PLSQL ORACLE:表变量之间的内部联接

PLSQL ORACLE:表变量之间的内部联接,oracle,plsql,inner-join,table-variable,Oracle,Plsql,Inner Join,Table Variable,我需要在oracle中创建两个表类型变量,并在它们之间进行内部联接。 我无法在源数据库中创建临时表,因为我没有权限。 如何在oracle中创建与SQL server中的此代码相关的匿名plsql块 DECLARE @TB_PROJETO TABLE ( ID INT, NAME NVARCHAR(MAX) ) DECLARE @TB_CAMERA TABLE ( ID INT, NAME NVARCHAR(MAX), PROJETOID INT )

我需要在oracle中创建两个表类型变量,并在它们之间进行内部联接。 我无法在源数据库中创建临时表,因为我没有权限。 如何在oracle中创建与SQL server中的此代码相关的匿名plsql块

DECLARE @TB_PROJETO TABLE
(
    ID INT, 
    NAME NVARCHAR(MAX)
)


DECLARE @TB_CAMERA TABLE
(
    ID INT, 
    NAME NVARCHAR(MAX),
    PROJETOID INT
)

BEGIN

    INSERT INTO @TB_PROJETO
    SELECT [ProjetoId], [Nome] FROM [dbo].[TbProjeto]

    INSERT INTO @TB_CAMERA
    SELECT [CameraId], [Nome],[ProjetoId]  FROM [dbo].[TbCamera]

    SELECT * FROM @TB_PROJETO P INNER JOIN @TB_CAMERA C ON P.ID = C.PROJETOID

END

表变量的使用在SQL Server中非常常见,但Oracle没有,因为Oracle非常擅长高效地连接表。因此,在Oracle中,与T-SQL例程相当的是:

SELECT c.ProjetoId
       , p.Nome as project_nome
       , c.CameraId
       , c.Nome as camera_nome
FROM TbProjeto p
     inner join TbCamera c
ON P.ID = C.PROJETOID

列别名是可选的,但为了清晰起见,必须这样做

在PL/SQL中没有表变量