Ciao a tutti.
Devo fare una cosa molto delicata su una funzione che riceve in input una query e restituisce un resultset.
Tale funzione deve essere trasparente al DB su cui effettua la query.
Ora, il problema è che su ORACLE questo caso
SELECT pippo AS pluto FROM topolino
Mi restituisce, nel result set, il nome della colonna come PLUTO, ovvero tutte maiuscole. Il che mi mette in difficoltà in quanto il nome delle colonne viene successivamente usato in modo case sensitive. Quindi il programma ha un comportamento diverso a seconda del db su cui lavora e non va più bene. Anche perché si tratterebbe di andare a mettere le mani su tutti i programmi sviluppati in 5 anni che usano quella funzione. (e non sono pochi).
Ora, scrivendo la query con questo formalismo
SELECT pippo AS "pluto" FROM topolino
ottengo il risultato desiderato.
La soluzione ovvia sarebbe trasformare l'attributo di AS aggiungendogli i doppi apici intorno, nel caso che la connessione sia Oracle (ovviamente la connessione, all'interno della funzione, la DEVO conoscere).
Il problema è che non so come recuperare (e sostituire) il parametro di AS, mettendomi al riparo da errori.
Intanto devo sostituire solo gli AS nella select, e poi devo prevedere situazioni del tipo
SELECT pippo AS pluto
FROM topolino
(il carattere di a capo può essere diverso a seconda dell'origine della query)
inoltre posso avere situazioni tipo
SELECT (SELECT pippo FROM pluto AS A WHERE ...) AS pluto FROM ...
insomma, non so come cavarmela....