-
Aufruf einer SQL Prozedur mit OUT-Parameter erzeugt Parameter-Fehler
Moin,
ich möchte eine einfache SQL-Prozedur mit zwei IN- und einem OUT- Parameter aufrufen. Dabei erhalte ich immer den Fehler "number of Parameter values set or registered does not match number of parameters". Es erscheint mir als wenn der Parameter-Marker (?) im Aufruf nicht erkannt wird. Was kann die Ursache sein?
Erstellen der Prozedur:
CREATE or replace PROCEDURE Bibliothek.test (
IN inANR numeric(6, 0),
IN inANR numeric(6, 0),
OUT outM numeric(10,3)
)
LANGUAGE SQL
SPECIFIC Bibliothek.test
...
Aufruf im ACS Run-SQL-Script-Tool:
call Bibliothek.test(000100, 500, ?);
-
Versuch mal vor dem Komma (Trennzeichen) ein Blank einzufügen.
Außerdem solltest Du bei gepackten und gezonten Werten tatsächlich ein Dezimal-Trennzeichen angeben. Numerische Werte ohne Dezimal-Trennzeichen werden als Integer definiert, was für SQL ein anderer Datentyp ist.
Also so:
Code:
CALL Bibliothek.test(000100,0 , 500,0 , ? );
ACS stellt sich da manchmal ein bisschen doof an!
Wenn kein Blank vor dem Trennzeichen angegeben ist, wird das Komma als Trennzeichen interpretiert und der nächste Parameter als Nachkomma-Stellen ... und damit erkennt er nur 2 und keine 3 Parameter
-
Ich meine beim ACS gibst du statt dem ? einfach einen Dummy-Wert an:
call Bibliothek.test(000100, 500, 0);
Unabhängig davon würde ich auch noch prüfen ob SQL nicht mehrere Prozedurend davon erstellt hat.
Z.B.: test00001 usw.
Der OR REPLACE bei den Prozeduren erstetzt nicht immer die Prozedur, gerade wenn sich die Parameter ändern, da SQL dann meint, dass es sich um eine ganz eigene Prozedur mit gleichen Namen aber unterschiedliche Parameter handelt.
Im ACS über das Menü "Schemas" einfach kurz prüfen.
lg Andreas
-
Um eine Prozedur mit Ausgabeparameter zu testen, bedarf es einer Hilfsfunktion, die den Ausgabeparameter als Return liefert. Diese ist dann im Select verwendbar.
Ein "?" gilt als Parameter, den man natürlich per ACS-SQL nicht übergeben kann.
Ein typgerechter Ersatzwert hilft ja nur beim Debug.
Typgerecht heißt: ein 10,3-Wert muss als 1234567,890 übergeben werden.
Wobei dies allerdings zu einem decimal (also packed) und nicht numeric (zoned) führt.
-
Bevor man irgendetwas behauptet sollte man es zuerst testen!
... oder aber einfach mal ausprobieren, was andere empfehlen!
-
Das zeigt mal wieder, dass eine kleine Provokation meinerseits dazu führt, dass mir das Gegenteil bewiesen wird. Und vor allem wie genau es gemacht wird.
Somit hilft dies dann doch allen.
Vielen Dank dafür.
-
@Brgitta: Danke, das blank hat geholfen.
@Andreas: Danke für den Hinweis auf ggf. mehrfach erstellte Prozeduren (was ja, wenn man verschiedene Versionen unterstützen möchte, auch sinnvoll sein kann). Hatte ich aber mit der Angabe von SPECIFIC schon vermieden.
Similar Threads
-
By JotSo in forum NEWSboard Programmierung
Antworten: 10
Letzter Beitrag: 30-10-19, 16:51
-
By Dschainers in forum NEWSboard Programmierung
Antworten: 3
Letzter Beitrag: 28-08-19, 11:09
-
By NEWSolutions Redaktion in forum NEWSolutions artikel
Antworten: 0
Letzter Beitrag: 01-06-18, 11:00
-
By sauerm in forum NEWSboard Programmierung
Antworten: 8
Letzter Beitrag: 09-03-18, 08:49
-
By chrisonline in forum NEWSboard Programmierung
Antworten: 11
Letzter Beitrag: 10-12-07, 13:29
Tags for this Thread
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- You may not post attachments
- You may not edit your posts
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks