нужна помощь, чтобы понять ниже код оракула - PullRequest
1 голос
/ 23 сентября 2019

Я наткнулся на какой-то фрагмент оракула.Может кто-нибудь объяснить это и что код возвращает?

Я попытался Google, чтобы выяснить, что делает odciobjectlist и не получил правильное объяснение.

Select ID,Objectname Name 
from table(SYS.odciObjectlist(SYS.OdciObject('1'.'Appr'),SYS.ODCIObject('2','Pending')))

1 Ответ

4 голосов
/ 23 сентября 2019

odciObjectlist - это один из нескольких типов, принадлежащих Oracle, который мы можем использовать для создания наших собственных расширений для Oracle. Узнать больше

В частности SYS.odciObjectlist - это массив типа SYS.odciObject, предназначенный для хранения информации об объекте схемы - имени схемы, имени объекта.Тем не менее, конструктор довольно прост, и мы можем использовать odciObject для хранения пар любой строки.

В случае вашего запроса, похоже, что кто-то создает коллекцию (?) Состояний (?)которые отображаются в виде таблицы с запросом с использованием функции table().Это дешевый способ генерирования набора результатов на лету, а не использование выбора из двойного и UNION ALL.

С помощью table() мы можем взять любую коллекцию вложенных таблиц SQL и запросить ее в предложении FROM оператора SELECT с набором результатов, который имеет одну строку для каждого объекта в коллекции.Поэтому, если мы возьмем запрос, опубликованный в вашем вопросе, и исправим грамматику следующим образом ...

Select objectschema as id
      ,objectname   as name
from table(SYS.odciObjectlist(
                SYS.OdciObject('1','Appr')
               ,SYS.OdciObject('2','Pending')
                             )
          )

... мы получим вывод:

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