Hej, Jag tror att det bara går att få ett returvärde från stored procedur eller funktion mot oracle Tror vi missförstår varandra här. Jag menar alltså en lagrad procedur i Oracle, men det heter väl paket där eller nåt. Hej Pelle Hej igen Pelle Jag har inget exempel framme utan tänkte ni hade nåt ni kunde testa. Har ingen oracledatabas att tillgå för tillfället. Det är ett resultatset som skall ut, exempelvis några rader om en kund eller något. Hej Pelle Hej, jag har inte problem med proceduren i sig, det är just hämtningen av data som returneras via ado. Hej igen Pelle Halloj Pelle! Tack uffe och folke - det där verkar vara en tung sten och förvånad att probemet ens diskuteras. vb6 och oracle procedurer
Jag har gått bet på att försöka skriva en procedur som returnerar data, dvs en inparameter och en utparameter och sedan kalla på denna för att få tillbaks ett recordset - men utan att lyckas.
Proceduren i sig fungerar att köra, men när man deklarerar invärdet via .command får jag fel hela tiden och enligt alla hemsidor är det så man gör. Är det någon som kan klippa en fungerande kod för att dels skapa paketet och sedan kod för att i vb anropa och returnera data?
Tack på förhandSv: vb6 och oracle procedurer
jag har försökt ett antal gånger men inte lyckats där i mot inparametrar tar den ett antal
jag tror inte det går att skapa procduren från vb skapas i sql+ ett program som följer med oracle
eller 3:de parts typ "Aqua Data Studio"
RogerSv: vb6 och oracle procedurer
Sv: vb6 och oracle procedurer
Det är mycket som kan ge fel när man använder databaser över Internet, inte minst
när det gäller Oracle. Det vanligaste är väl att man glömt "SET SERVEROUTPUT ON".
Oracles procedurer levererar inte text som jag tror MS SQL-server procedurer gör.
Istället levereras output i form av "Referenced Cursor". Det är något som i grunden
skapar problem när anropar t.ex. från VB. Jag vet inte heller vilka fel det är
som uppstår. Är det något som Oracle returnerar? Blir det skillnad om man byter
drivare eller provider? Går det att anropa procedurer som inte levererar output ?
Hur ser alltså koden och felet ut? Jag brukar inte använda VB själv, men jag har nog
sparat någon artikel med VB-kod vad gäller anrop av Oracle-procedurer. Jag kan leta
fram den om du fortfarande har problem.
Bästa Hälsningar
Folke Larsson
Sv: vb6 och oracle procedurer
Jag kom plödsligt på att jag också kanske missförstod ditt syfte.
Det är inte så lätt när man inte ser koden. Vad är det alltså för
utdata du vill ha? Är det ett enstaka värde eller ett resultset?
Bästa Hälsningar
Folke LarssonSv: vb6 och oracle procedurer
Sv: vb6 och oracle procedurer
Att du har ingen oracledatabas att tillgå kan förståss ju vara orsaken till att du inte
får ut något recordset. När du pratar om VB6 kanske det är något gammalt problem
du haft, eller?
Jag har inte VB själv, men hjälper gärna till om någon har både VB och Oracle och
vill experimentera lite. Jag kan skriva PL/SQL-koden och ge tips om VB-koden.
Man ska alltså använda packages, i vilka det kan finnas procedurer, funktioner och
globala variabler, även cursors.
Att hämta ut en tabellrad/recordset från en Oracle-procedur kan verka besvärligt. Om
man använder OLEDB kan koden se olika ut beroende på vilken provider man använder.
Vad gäller ODBC är det skillnad mellan olika versioner. I manualerna till respektive
provider eller driver finns hjälp att tillgå. Versionen av Oracle kan också ha betydelse.
Alltså: olika kod beroende på vilken mjukvara man har.
Det jag skrivit ovan gäller främst VB före .NET. Vad gäller .NET finns ju
Oracle Managed Providers att tillgå. Jag har inte provat själv, men dom flesta problemen
verkar vara lösta.
Bästa Hälsninngar
Folke LarssonSv:vb6 och oracle procedurer
När det gäller .Net providern för oracle så finns ett litet aber. Man måste ha version 8.1.7 om jag inte minns fel för att kunna nyttja den nya providern så i detta specifika fall går det inte att uppgradera databasen för så många andra system måste testas samtidigt då.
Sv: vb6 och oracle procedurer
Du måste nog gå den "hårda vägen" med "Referenced Cursor".
Jag kan nog hjälpa dig, men då måste jag ha mer information
om själva felen och koden mm. Jag vet ju inte vad proceduren
ska göra och det kanske går att lösa på annat sätt.
Hur ser förresten den där exempel-koden ut som skulle fungera?
P.S. När man använder Oracle Managed Providers anser jag att man
bör ha minst 9i Release 2. Det leder mycket riktigt till en del testning.
En del gamla program kanske inte längre kan anropa databasen och
det kan till och med hända att administrations-scripts slutar fungera.
Det kan t.ex. gälla backup-rutiner. Med tanke på att Oracle ändrat
på funktionaliteten vad gäller hur tabeller hanteras internt bör man
också bygga om databasen så att den fungerar på det nya sättet.
Det gamla blir såsmåningom obsoletat. D.S.
Bästa Hälsningar
Folke LarssonSv:vb6 och oracle procedurer
Jag försökte få till detta för något/några år sedan men gick bet.
Jag fick aldrig VB att förstå svaret från min procedur/funktion.
Oracle och tillhörande drivrutiner har kommit med nya versioner
sedan jag provade så det kanske går bättre nu.
Om du ska returnera ett resultatset så är det ref cursor du ska använda som nämns ovan.
En bra plats för att fixa Oracle-delen rätt är:
http://www.oracle.com/pls/db92/db92.drilldown?levelnum=2&toplevel=a96624&method=FULL&chapters=0&book=&wildcards=0&preference=Examples&expand_all=&verb=&word=REF+CURSOR#a96624
Lycka till
/UffeSv: vb6 och oracle procedurer
Uffe -sköt om dig! Träffade faktiskt Bruno för inte så länge sen, han mådde jättebra. Hoppas du gör det med!