Wolverin Skrevet 31. juli 2009 Del Skrevet 31. juli 2009 (endret) Hei. jeg har flere ganger opplevd at jeg lager en prosedyre i Oracle (gjerne PL/SQL), hvor jeg har en viss argument liste som input. Ofte er det datoer med i bildet, og her kommer problemet. Datoene kreves skrevet med ' tegnet forran og bak, og å få spoolet ut dette til en transaskjonsfil som ikke databasekyndige skal kunne benytte seg av, det viser seg å være svært vanskelig. kode eksempel: select 'exec hent_time(' || dato || ', 1);' as teksten from test order by dato; Her er greia at det kjøres en exec kommando først som legger datoer inn i tabellen test. Test tabellen består av ID som er et NUMBER felt, og dato som er DATE. ID er et is not null felt, fordi det er primærnøkkel i tabellen. Det ligger en lagret prosedyre som heter hent_time, som skal lete i en masse tabeller, behandle dataene, og legge bare de forekomster som ikke eksisterer i en tabell inn i en annen. enkelt forklart selvsagt Problemet mitt er at jeg tenkte å lage en bat fil som kan startes fra et ikon på desktop til noen brukere her, hvor de blir promptet for å legge inn to parametre. Også kjøres først den ene prosedyren, som legger datoer inn i test tabellen hvor datoene da representerer input til neste prosedyre. Så skal det spooles ut en fil med exec kommandoen og to argumenter inn. Det ene er dato, det andre er periode lengde, den er alltid 1, så det hardkoder jeg bare et 1 tall på. Mitt store problem er: Åssen skal jeg klare å få ' tegnet forran og bak datoen når jeg spooler? Og hvordan ungår jeg å få SQL> (altså sql prompt) med på ut filen min. Jeg vil bare ha resultatet ut, ikke noe mer enn det. Jeg har gått rundt problemet ved å hardkode ' tegnet i prosedyren, slik at den alltid setter det forran og bak, for da kan input være uten tegnene. Men det irriterer meg at jeg ikke vet hvordan jeg gjør dette. Endret 31. juli 2009 av Wolverin Lenke til kommentar
Wolverin Skrevet 31. juli 2009 Forfatter Del Skrevet 31. juli 2009 Hei. jeg har flere ganger opplevd at jeg lager en prosedyre i Oracle (gjerne PL/SQL), hvor jeg har en viss argument liste som input. Ofte er det datoer med i bildet, og her kommer problemet. Datoene kreves skrevet med ' tegnet forran og bak, og å få spoolet ut dette til en transaskjonsfil som ikke databasekyndige skal kunne benytte seg av, det viser seg å være svært vanskelig. kode eksempel: select 'exec hent_time(' || dato || ', 1);' as teksten from test order by dato; Her er greia at det kjøres en exec kommando først som legger datoer inn i tabellen test. Test tabellen består av ID som er et NUMBER felt, og dato som er DATE. ID er et is not null felt, fordi det er primærnøkkel i tabellen. Det ligger en lagret prosedyre som heter hent_time, som skal lete i en masse tabeller, behandle dataene, og legge bare de forekomster som ikke eksisterer i en tabell inn i en annen. enkelt forklart selvsagt Problemet mitt er at jeg tenkte å lage en bat fil som kan startes fra et ikon på desktop til noen brukere her, hvor de blir promptet for å legge inn to parametre. Også kjøres først den ene prosedyren, som legger datoer inn i test tabellen hvor datoene da representerer input til neste prosedyre. Så skal det spooles ut en fil med exec kommandoen og to argumenter inn. Det ene er dato, det andre er periode lengde, den er alltid 1, så det hardkoder jeg bare et 1 tall på. Mitt store problem er: Åssen skal jeg klare å få ' tegnet forran og bak datoen når jeg spooler? Og hvordan ungår jeg å få SQL> (altså sql prompt) med på ut filen min. Jeg vil bare ha resultatet ut, ikke noe mer enn det. Jeg har gått rundt problemet ved å hardkode ' tegnet i prosedyren, slik at den alltid setter det forran og bak, for da kan input være uten tegnene. Men det irriterer meg at jeg ikke vet hvordan jeg gjør dette. Fant svar på det ene av spørsmålene: select 'exec hent_time(''' || dato || ''', 1);' as teksten from test order by dato; Løsningen er altså 3 ' tegn. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå