Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Pomoc przy zapytaniu, SQL, SQL*Plus
cosmogirl3
post
Post #1





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 8.05.2007

Ostrzeżenie: (0%)
-----


Proszę o pomoc z zapytaniem, które ma wygenerować skrypt do pliku. W skrypcie tym zapiszą sie wszystkie "create table" jakie mam w bazie.

Nie wiem co sie dzieje w niektórych liniach kodu.

  1. SET HEADING OFF
  2. SET FEEDBACK OFF
  3. SET TERMOUT OFF
  4. SPOOL C:\CREATE.SQL
  5. COLUMN S FORMAT A40 HEADING ' '
  6. COLUMN KOLUMNY FORMAT A40 HEADING ' '
  7. BREAK ON S SKIP 1--lamanie z przejsciem do lini 1
  8. SELECT 'CREATE TABLE '||Table_name||'( ' "S", COLUMN_NAME||' '||DATA_TYPE||
  9. DECODE(CHAR_COL_DECL_LENGTH,NULL,'','('||CHAR_COL_DECL_LENGTH||')')||DECODE(DATA_PRECISION,NULL,'','('||DATA_PRECISION||')')
  10. || DECODE(NULLABLE,'N',' NOT NULL')||
  11. DECODE(COLUMN_ID,(SELECT MAX(COLUMN_ID) FROM User_tab_columns WHERE table_name=K.table_name),');',',') "KOLUMNY" --COLUMN_ID wskazuje na pozycję kolumn. W kolumnie o ostatnim COLUMN_ID dla danej tabeli dekodujemy numer na znak ');'
  12. FROM User_tab_columns K
  13. WHERE table_name IN ('PRACOWNICY','FIRMA,'FUNKCJE','DOSTAWCY','PRODUCENT');
  14. SPOOL OFF
  15. SET HEADING ON SET FEEDBACK ON SET TERMOUT ON START C:\CREATE.SQLCREATE TABLE PRODUCENT(
  16. OPIS VARCHAR2(50))
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 1)
spalony
post
Post #2





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 20.06.2008

Ostrzeżenie: (0%)
-----


Proponuję zamiast tego długiego zapytania:
SELECT 'CREATE TABLE '||Table_name||'( ' "S", COLUMN_NAME||' '||DATA_TYPE||
DECODE(CHAR_COL_DECL_LENGTH,NULL,'','('||CHAR_COL_DECL_LENGTH||')')||DECODE(DATA_PRECISION,NULL,'','('||DATA_PRECISION||')')
|| DECODE(NULLABLE,'N',' NOT NULL')||
DECODE(COLUMN_ID,(SELECT MAX(COLUMN_ID) FROM User_tab_columns WHERE table_name=K.table_name),');',',') "KOLUMNY" --COLUMN_ID wskazuje na pozycję kolumn. W kolumnie o ostatnim COLUMN_ID dla danej tabeli dekodujemy numer na znak ');'
FROM User_tab_columns K
WHERE table_name IN ('PRACOWNICY','FIRMA,'FUNKCJE','DOSTAWCY','PRODUCENT');

wstawić, to krótkie:
SELECT DBMS_METADATA.get_ddl ('TABLE', table_name)
FROM user_tables;

efekt końcowy będzie na pewno lepszy (IMG:http://forum.php.pl/style_emoticons/default/guitar.gif)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 14:17