2010-11-16 14 views
8

W Oracle * SQL wyniki SELECT są wyświetlane w formie tabelarycznej. Czy istnieje sposób wyświetlania wiersza w sposób klucz-wartość (jak MySQL's \G option)?Odpowiednik MySQL G w Oracle SQL * Plus

Baza danych, nad którą pracuję (schemat nie jest przeze mnie zdefiniowany) ma grupę kolumn o nazwach np. YN_ENABLED (YN = tak nie), które są CHAR(1). Więc kiedy zrobić kwerendę uzyskać wynik jak

ID_MYTABLE Y Y Y 
------------ - - - 
3445   Y N Y 

więc to naprawdę nie jest jasne, które kolumny mają wartości, które (bez schematu otwarty w innym oknie).

+1

Wątek OTN http://forums.oracle.com/forums/thread.jspa?threadID=923884 opisano, że . – codaddict

+0

Dzięki! Próbowałem Googling, ale niestety "odpowiednik \ G" nie jest zbyt do użytku Google. Dzięki za link. –

Odpowiedz

10

Nie wbudowany w SQL PLus, ale Tom Kyte dostarczył procedurę o nazwie print_table, która to robi. Można by uruchomić go tak:

SQL> exec print_table ('select * from mytable where id_mytable=123'); 

And see results like: 

ID_MYTABLE  : 123 
YN_ENABLED  : Y 
YN_SOMETHING : N 
... 
+0

Czy Oracle wdrożyło go od 2010 roku? Chciałbym użyć go wewnątrz programu SQL Developer, aby eksportować czystsze wyniki ... – GournaySylvain

3

Znam Twoje pytanie jest o SQL * Plus, ale można się dowiedzieć, że Oracle SQL Developer można to zrobić. Funkcji tej można użyć, klikając prawym przyciskiem myszy Wyniki zapytania i wybierając "Widok pojedynczego rekordu ...".

1

Oto trik, który może zrobić w kropce, jeśli nie chcą (lub nie może) zainstalować nową procedurę na serwerze:

  1. Wybierz wiersz (lub wierszy) odsetek w Oracle SQL Developer Okno wyników zapytania.
  2. Użyj programu Oracle SQL Developer, aby skopiować wiersze i nagłówki do schowka.
  3. Wklej do ulubionego arkusza kalkulacyjnego (np. MS Excel). Teraz masz zapisy w rzędach.
  4. Skopiuj właśnie wklejono wiersze do arkusza kalkulacyjnego.
  5. Użyj funkcji "Wklej specjalnie - transponuj" w arkuszu kalkulacyjnym, aby wkleić wartości do nowego arkusza kalkulacyjnego. Teraz twoje rekordy powinny być w kolumnach.
1

Wchodząc z opóźnieniem, ale okazało się to

SQL> select * from xmltable('ROWSET/ROW/*' passing xmltype(cursor(select * from emp where rownum = 1 
)) columns name varchar2(30) path 'node-name(.)', value varchar2(30) path '.'); 

Znaleziono here

Powiązane problemy