PLSQL ORACLE: внутреннее соединение между табличными переменными - PullRequest
0 голосов
/ 13 декабря 2018

Мне нужно создать две переменные табличного типа в oracle и создать внутреннее соединение между ними.Я не могу создать временную таблицу в исходной базе данных, потому что у меня нет привилегий.Как создать анонимный блок plsql в Oracle что-то относительно этого кода в SQL-сервере?

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

1 Ответ

0 голосов
/ 13 декабря 2018

Использование табличных переменных очень распространено в 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

Псевдоним столбца необязателен, но для ясности

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...