sql >> Databasteknik >  >> RDS >> Oracle

Returnera en 'tabell' (utan att fördefiniera kolumnnamn) från en PL/SQL-funktion

Jag skulle starkt misstänker att du inte vill göra detta. Att dynamiskt skapa objekttyper och bygga den här typen av flexibilitet i PL/SQL är nästan alltid ett recept på ruin. Du kommer att skriva extremt komplicerad dynamisk SQL överallt (både i anroparna och i dina funktioner) vilket kommer att göra din kod mycket, mycket svårare att läsa och felsöka. När din kod blir så komplex är det bättre för dig att skriva ramverk som genererar koden, men som lämnar dig med det mycket, mycket svårare problemet att skriva kod som genererar kod som löser ditt problem snarare än att bara skriva kod som löser ditt problem.

Som sagt, om du är verkligt, verkligt beslutsam, är det möjligt att bygga en helt generisk pipelined tabellfunktion . Det innebär en djup, djup trolldom med hjälp av Oracle Data Cartridge-ramverket. Det är ganska coolt. Men antalet personer som realistiskt skulle kunna stödja och utöka denna typ av kod är mycket litet.

Med lite mindre trolldom (men ändå mycket mer än jag skulle föreslå för praktiskt taget alla organisationer), kan du bygga en flexibel pipelined tabellfunktion som förlitar sig på att returnera typer från en fördefinierad typhierarki. Det är mer sannolikt att det går att stödja men det förutsätter att du kan bygga din typhierarki i förväg.




  1. Lära:PÅ DUBLIKAT UPPDATERING AV NYCKEL

  2. Gör en stund/loop för att få 10 slumpmässiga resultat

  3. Rails ansluter sig till frågan

  4. MySQL-frågan fungerar i phpmyadmin men inte i php