Как вызвать функцию с параметром Rowtype от избранного оператора в Oracle

Один из способов сделать это:

    List<Set<String>> tmp = new ArrayList<>();
    tmp.add(new HashSet<>(List.of("A", "B", "C")));
    tmp.add(new HashSet<>(List.of("B", "A", "C")));
    tmp.add(new HashSet<>(List.of("C", "D", "E")));
    tmp.add(new HashSet<>(List.of("E", "C", "D")));

    Iterator<Set<String>> it = tmp.iterator();
    while (it.hasNext())
    {
        Set<String> currentSet = it.next();

        for (Set<String> set : tmp)
        {
            if (currentSet != set
                    && currentSet.containsAll(set)
                    && currentSet.size() == set.size())
            {
                it.remove();
                break;
            }
        }
    }

    System.out.println(set);

Вывод:

[[A, B, C], [C, D, E]]
6
задан Benjamin 25 November 2013 в 09:56
поделиться

3 ответа

Вы не можете сделать этого с %ROWTYPE. %ROWTYPE является на самом деле МН типом записи / типом записи SQL, который не является легальным типом в SQL, таким образом, Вы не можете использовать его в ВЫБОРЕ. Необходимо создать тип объекта, который имеет те же столбцы как таблица, изменение для функционирования, чтобы ожидать, что тип объекта вместо %ROWTYPE, и затем можно записать что-то вроде этого:

SELECT function(table1_typ(column1, column2, column3))
  FROM table1 t1

Недостатки: все еще необходимо ввести все столбцы в ВЫБОРЕ, и если Вы измените таблицу, то необходимо будет изменить тип объекта и ВЫБОР также.

5
ответ дан 17 December 2019 в 07:09
поделиться

Почему не только передают идентификатор строки в и делают функциональную работу над этим?


Править: Вы смогли создавать ОБЪЕКТ / ВВОДЯТ на лету и передача это к функции. Затем необходимо будет только запросить для данных однажды. Сообщите мне, нужен ли Вам пример.


0
ответ дан 17 December 2019 в 07:09
поделиться

Можно сделать это:

DECLARE
    foo table1%ROWTYPE;
BEGIN
     function1(foo);
END;

Править: Можно проверить это сообщение в блоге для более подробного описания того, как использовать эту технику.

-1
ответ дан 17 December 2019 в 07:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: