powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Подскажите как возможно с помощью рекурсии развернуть столбцы
7 сообщений из 7, страница 1 из 1
Подскажите как возможно с помощью рекурсии развернуть столбцы
    #40029784
x17.mstu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день

Есть запрос
Select column_name from all_tab_columns
where owner='TCH' and table name = 'PAS_MIS';

Id1
Id2
Id3

В результате мы получаем список колонок (Id1, Id2, Id3)

Как сделать запрос чтобы по входному параметру - имени таблицы можно было получить на выходе результат вида
Id1 Id2 Id3
value value value
...
Рейтинг: 0 / 0
Подскажите как возможно с помощью рекурсии развернуть столбцы
    #40029787
ASNexus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
x17.mstu,

А зачем здесь рекурсия?

На чистом SQL поставленную задачу решить невозможно, а на PL/SQL в цикле формируем текст запроса к нужной таблице и вызываем execute immediate, или можно DBMS_SQL использовать - от конкретных условий зависит, что удобнее и уместнее.
...
Рейтинг: 0 / 0
Подскажите как возможно с помощью рекурсии развернуть столбцы
    #40029796
Фотография Pastic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Почитайте про pivot и unpivot.
...
Рейтинг: 0 / 0
Подскажите как возможно с помощью рекурсии развернуть столбцы
    #40029808
ASNexus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Pastic
Почитайте про pivot и unpivot.

А как это поможет выполнить условие задачи?
авторчтобы по входному параметру - имени таблицы можно было получить на выходе результат
ТС ведь ожидает получить не только перечень столбцов неизвестной на момент написания кода таблицы, но и их содержимое:
авторId1 Id2 Id3
value value value
...
Рейтинг: 0 / 0
Подскажите как возможно с помощью рекурсии развернуть столбцы
    #40029827
PuM256
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Учитывая, что all_tab_columns возвращает все колонки, почему бы просто не сделать select * from TCH.PAS_MIS?
...
Рейтинг: 0 / 0
Подскажите как возможно с помощью рекурсии развернуть столбцы
    #40029828
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ASNexus

ТС ведь ожидает получить не только перечень столбцов неизвестной на момент написания кода таблицы, но и их содержимое


Если ТС действительно ожидает получить не только перечень столбцов неизвестной на момент написания кода таблицы, но и их содержимое, то это очередной финт ушами от TC ибо тогда все что нужно это:

Код: plsql
1.
2.
select * from TCH.PAS_MIS
/



SY.
...
Рейтинг: 0 / 0
Подскажите как возможно с помощью рекурсии развернуть столбцы
    #40029836
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
create or replace
  procedure get_data(
                     p_owner varchar2,
                     p_table_name varchar2
                    )
    as
        v_cursor sys_refcursor;
    begin
        open v_cursor
          for
            'select  *
               from  ' || p_owner || '.' || p_table_name;
          dbms_sql.return_result(v_cursor);
end;
/



Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
SQL> exec get_data('scott','dept');

PL/SQL procedure successfully completed.

ResultSet #1

    DEPTNO DNAME          LOC
---------- -------------- -------------
        10 ACCOUNTING     NEW YORK
        20 RESEARCH       DALLAS
        30 SALES          CHICAGO
        40 OPERATIONS     BOSTON

SQL> exec get_data('scott','emp');

PL/SQL procedure successfully completed.

ResultSet #1

     EMPNO ENAME      JOB              MGR HIREDATE         SAL       COMM     DEPTNO
---------- ---------- --------- ---------- --------- ---------- ---------- ----------
      7369 SMITH      CLERK           7902 17-DEC-80        800                    20
      7499 ALLEN      SALESMAN        7698 20-FEB-81       1600        300         30
      7521 WARD       SALESMAN        7698 22-FEB-81       1250        500         30
      7566 JONES      MANAGER         7839 02-APR-81       2975                    20
      7654 MARTIN     SALESMAN        7698 28-SEP-81       1250       1400         30
      7698 BLAKE      MANAGER         7839 01-MAY-81       2850                    30
      7782 CLARK      MANAGER         7839 09-JUN-81       2450                    10
      7788 SCOTT      ANALYST         7566 19-APR-87       3000                    20
      7839 KING       PRESIDENT            17-NOV-81       5000                    10
      7844 TURNER     SALESMAN        7698 08-SEP-81       1500          0         30
      7876 ADAMS      CLERK           7788 23-MAY-87       1100                    20
      7900 JAMES      CLERK           7698 03-DEC-81        950                    30
      7902 FORD       ANALYST         7566 03-DEC-81       3000                    20
      7934 MILLER     CLERK           7782 23-JAN-82       1300                    10

14 rows selected.

SQL>



SY.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Подскажите как возможно с помощью рекурсии развернуть столбцы
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]