Toon posts:

[SQL] Inserts genereren voor variabele tabel

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb een probleem / uitdaging.
Ik ben al ff aan het klooien, maar ik kom er niet uit.

Het gaat hierom:
Ik wil voor alle tabellen in mijn database waar een bepaalde waarde niet in voorkomt, een nieuw record toevoegen.
FF concreet, in een systeem wordt gebruik gemaakt van keuzelijstjes, in die keuzelijstjes moet ook de optie "Onbekend" worden toegevoegd.

Nu kan ik dat allemaal handmatig doen, maar het is handiger en meer een uitdaging, als ik automatisch INSERT-statements kan laten genereren.

Voor 1 losse tabel lukt dat wel:
SQL:
1
2
3
select 
    'insert into elc_netbeheer VALUES('||(max(pk_netbeheer)+1)||',''Onbekend'',null);' INSERTS
from    elc_netbeheer;


De tabellen zien er allemaal hetzelfde uit:
pk_veldnaam, veldnaam, prio

Zodra in de kolom Veldnaam niet de waarde "Onbekend" voorkomt, moet die dus achteraan worden ingevoegd.

Een overzicht van alle keuzelijstjes maak ik met de volgende query:
SQL:
1
select table_name, column_name, substr(column_name,4) from user_tab_columns where column_name like 'PK%';



Uiteraard handig om er bij te vermelden dat ik alleen de beschikking heb over SQL.


Ik kom er niet uit hoe ik in de eerste query de tabel en kolomnamen kan vervangen door de namen die in de 2e query voorkomen. Kan iemand meedenken?

[ Voor 4% gewijzigd door Verwijderd op 04-06-2003 13:45 ]


  • DeverauX
  • Registratie: Februari 2002
  • Niet online

DeverauX

Focus is everything

Ik kom er niet uit hoe ik in de eerste query de tabel en kolomnamen kan vervangen door de namen die in de 2e query voorkomen. Kan iemand meedenken?
Als je voor de rest niet de beschikking hebt over een script/programmeertaal zou je het middels subselects wel voor elkaar moeten krijgen ;) Moet je database het wel ondersteunen natuurlijk...

...whatever was distasteful or unpleasant or uncomfortable or painful - music could always soothe that.
All you have to do is reach out to beauty.
Quincy Jones


Verwijderd

Topicstarter
DeverauX schreef op 04 June 2003 @ 14:14:
[...]

Als je voor de rest niet de beschikking hebt over een script/programmeertaal zou je het middels subselects wel voor elkaar moeten krijgen ;) Moet je database het wel ondersteunen natuurlijk...
Oracle 7, dus dat is geen probleem :)

Ik zit nu in deze richting te denken, maar dat is het niet helemaal (helemaal niet :) )
SQL:
1
2
3
select 
    'insert into (select table_name from user_tab_columns where column_name like ''PK%'') VALUES('||(max(select column_name from user_tab_columns where column_name like ''PK%'';)+1)||',''Onbekend'',null);' INSERTS
from    (select table_name from user_tab_columns where column_name like 'PK%');

  • DeverauX
  • Registratie: Februari 2002
  • Niet online

DeverauX

Focus is everything

Wat gaat er niet goed dan? Foutmelding? Onjuiste werking?
Trouwens waarom kies je voor Max() bij de values :?, aangezien je dit bij het selecteren van de table_name niet doet krijg je sowieso niet de juiste waardes toch ;)

...whatever was distasteful or unpleasant or uncomfortable or painful - music could always soothe that.
All you have to do is reach out to beauty.
Quincy Jones