PLSQL ORACLE:表变量之间的内连接

Posted

技术标签:

【中文标题】PLSQL ORACLE:表变量之间的内连接【英文标题】:PLSQL ORACLE : Inner join between table variables 【发布时间】:2018-12-13 12:51:19 【问题描述】:

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

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

【问题讨论】:

PL/SQL中没有“表变量”这种东西 【参考方案1】:

表变量的使用在 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

列别名可选,但为了清晰起见

【讨论】:

以上是关于PLSQL ORACLE:表变量之间的内连接的主要内容,如果未能解决你的问题,请参考以下文章

sql server 2005 中的内连接和外连接 怎么理解?

右表中空结果的内连接

派生表的内连接

oracle左连接查询和右连接查询随便举个例子谢谢!

选择连接SQL语句中的内连接和where之间的区别[重复]

plsql能否配置ssl连接oracle