![]() |
Datenbank: Oracle • Version: 10g • Zugriff über: ADOConnection
ADOStoredProc liefert Oraclefehler beim anhäkeln von Active
Hallo Allerseits,
mein Problem betrifft zunächst mal nur die Entwicklungszeit. Ich habe in einem Datenmoul eine ADO-Connection, die sich über active=true auf die DB verbindet. In der DB gibt es eine StoredProcedure (SP_BlaBlub), die sich im PL/SQL Developer compilieren lässt. In Delphi im Datenmodul habe ich eine ADOStoredProc, die sich auf eben diese StoredProcedure beruft und die eingangs erwähnte ADO-Connection benutzt. Wenn ich dann bei der ADOStoredProc bei active ein Häkchen setze, dann kommt die Fehlermeldung: "ORA-06550: Zeile 1, Spalte 7: PLS-00306: Falsche Anzahl oder Typen von Argumenten in Aufruf von SP_BlaBlub ORA-06550: Zeile 1, Spalte 7: PL/SQL: Statement ignored." Kann mir mir von Euch jemand einen Tip geben, wo ich den Fehler suchen muss? Das verwendete Delphi ist D-2010 Prof. |
AW: ADOStoredProc liefert Oraclefehler beim anhäkeln von Active
Gibt die Stored Proc ein Rowset als Ergebnis zurück?
Falls nein, ist es verboten das Property Active auf True zu setzen. Stattdessen darf nur ExecProc im Sourcecode aufgerufen werden:
Delphi-Quellcode:
ADOStoredProc1.Parameters.ParamValues['ArtikelNr'] := ...;
ADOStoredProc1.ExecProc; |
AW: ADOStoredProc liefert Oraclefehler beim anhäkeln von Active
Welcher ADO-Provider? Die von MS sind an vielen Stellen fehlerhaft. Und MS hat mittlerweile jeglichen Support/Weiterentwicklung eingestellt.
|
AW: ADOStoredProc liefert Oraclefehler beim anhäkeln von Active
Sehr schnelle Antwort, danke.
Woran erkenne ich denn, ob die Stored Proc ein Rowset als Ergebnis zurückliefert? Sie gibt jeden falls ein "varchar2" zurück. Den von Dir erwähnten Aufruf teste ich jetzt mal.... |
AW: ADOStoredProc liefert Oraclefehler beim anhäkeln von Active
Provider=OraOLEDB.Oracle.1;Password=...;Persist Security Info=True;User ID=...;Data Source=XE;Extended Properties=""
|
AW: ADOStoredProc liefert Oraclefehler beim anhäkeln von Active
Kaum macht man es richtig, schon geht es!
Der Tip mit dem "ExecProc" war zielführend. Danke. |
AW: ADOStoredProc liefert Oraclefehler beim anhäkeln von Active
Nun habe ich aber doch noch eine Frage:
Wenn das hier das Script ist, mit dem die SP in die DB kam, was muss ich dann tun um an den ReturnWert der SP heranzukommen? CREATE OR REPLACE FUNCTION SP_BlaBlub(iAbc_ID in varchar2) return varchar2 IS tCnt pls_integer; tRes varchar2(4) := 'F'; begin select count(*) into tCnt from tableXox t where Xyz_ID = '14' and t.P_ID = iAbc_ID; if tCnt > 0 then tRes := 'T'; end if; return tRes; EXCEPTION WHEN OTHERS THEN ... ; END; Ich habe bisher folgende drei Zeilen: ADOStoredProc_SP_BlaBlub.Open; DM1.ADOStoredProc_SP_BlaBlub.Parameters.ParamValue s['iAbc_ID'] := '020880'; DM1.ADOStoredProc_SP_BlaBlub.ExecProc; Wie was muss ich schreiben um an tRes heranzukommen? |
AW: ADOStoredProc liefert Oraclefehler beim anhäkeln von Active
Ich kenne mich mit der Kombination ADO/Oracle zwar nicht aus, aber geht es so?
Delphi-Quellcode:
DM1.ADOStoredProc_SP_BlaBlub.Parameters.ParamValues['iAbc_ID'] := '020880';
DM1.ADOStoredProc_SP_BlaBlub.Open; ShowMessage(DM1.ADOStoredProc_SP_BlaBlub.Fields[0].AsString); |
AW: ADOStoredProc liefert Oraclefehler beim anhäkeln von Active
Wenn die SP bereits auf der Datenbank liegt, müsstest du eigentlich so an das Ergebnis kommen:
Code:
Dieses Statement packst du in eine AdoQuery und rufst das Ergebnis mit Open und FieldByNAme('Ergebnis').AsString ab. Dann brauchst du natürlich auch keine AdoStoredProcedure mehr...
SELECT SP_BLABLUB('020880') ERGEBNIS FROM DUAL
Grüße Mikhal |
AW: ADOStoredProc liefert Oraclefehler beim anhäkeln von Active
Zitat:
Was ist "DUAL"? Ja, die StoredProcedure ist schon auf der DB. Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:05 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz