PLSQL ORACLE:table 个变量之间的内部连接
PLSQL ORACLE : Inner join between table variables
我需要在 oracle 中创建两个 table 类型的变量,并在它们之间进行内部连接。
我无法在源数据库中创建临时 table,因为我没有权限。
如何在与 SQL 服务器中的此代码相关的 oracle 中创建匿名 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
table 变量的使用在 SQL 服务器中很常见,但 Oracle 没有它们,因为 Oracle 非常擅长有效地连接 tables。所以在 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
列别名可选,但为清楚起见已完成
我需要在 oracle 中创建两个 table 类型的变量,并在它们之间进行内部连接。 我无法在源数据库中创建临时 table,因为我没有权限。 如何在与 SQL 服务器中的此代码相关的 oracle 中创建匿名 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
table 变量的使用在 SQL 服务器中很常见,但 Oracle 没有它们,因为 Oracle 非常擅长有效地连接 tables。所以在 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
列别名可选,但为清楚起见已完成