-
1. Statt CreateObject kannst du auch einfach new verwenden:
set cnAS400 = new ADODB.Connection
2. Returnwerte werden nur bei SQL-Prozeduren unterstützt, ansonsten muss man die Objekt-API's und Konverter-API's verwenden.
Also:
Für jedes Programm, dass du aufrufen willst, musst du einen "Create Procedure" mit den jeweiligen In/Out-Parametern definieren.
-
Hallo,
vielen dank für die schnelle Rückmeldung. Nur Ich hab sowas nicht nie wirklich gemacht, da ich meistens nur Datensätze lese.
Können wir vielleicht meine Funktion mal so umändern das ich ein Beispiel habe?
Das AS400 Programm kann ja Pseudo sein.
-
hi, du kannst schon ein select auf eine funktion machen
2 möglichkeiten::
1) *) die funktion muss als rückgabewert eine table beinhalten
*) die syntax sieht dann so aus:
select * from table (myfunction ('xxx', 333)) tab1
2) select function ('xxx', 333) sp1 from sysibm/sysdummy1
lg andreas
-
Also es könnte ungefähr so aus sehen, du musst das nur für dein Programm adaptieren
SQL:
CREATE PROCEDURE USMOD_16/ORAPERIODDATES
(IN FIRM VARCHAR(1)
,IN WKNR VARCHAR(3)
,IN ACTDATE DATE
,OUT PERIODE DECIMAL(6, 0)
,OUT FROMDATE DATE
,OUT TODATE DATE
)
LANGUAGE RPGLE
DETERMINISTIC
READS SQL DATA
EXTERNAL NAME 'USMOD_16/ORAPERDAT'
PARAMETER STYLE SQL
ILERPG:
hactgrp(*caller) dftactgrp(*no) datfmt(*iso)
d RHFirma s 1 varying
d RHWerk s 3 varying
d RHActDate s d
d RHPeriode s 6p 0
d RHFromDate s d
d RHToDate s d
d RHFirma_i s 5i 0
d RHWerk_i s 5i 0
d RHActDate_i s 5i 0
d RHPeriode_i s 5i 0
d RHFromDate_i s 5i 0
d RHToDate_i s 5i 0
d SQLStateX s 5
d FuncName s 139 varying
d SpecName s 128 varying
d DiagMsg s 70 varying
c *entry plist
c parm RHFirma
c parm RHWerk
c parm RHActDate
c parm RHPeriode
c parm RHFromDate
c parm RHToDate
c parm RHFirma_i
c parm RHWerk_i
c parm RHActDate_i
c parm RHPeriode_i
c parm RHFromDate_i
c parm RHToDate_i
c parm SQLStateX
c parm FuncName
c parm SpecName
c parm DiagMsg
Die _i-Variablen sind NULL-Flags
-1 = NULL
0 = Wert angegeben
Für jeden Parameter gibt es zusätzlich einen NULL-Flagparameter.
-
@Andreas
Funktionen können aber nur 1 Wert zurückgeben und, wie du schon sagst, muss ich einen Select verwenden.
-
.. es sei denn, es ist eine UDTF (User defined Table Function.
BTW: eine Function lässt sich immer in ein Select maskieren als: select myFunc(...) as hugo from sysibm.sysdummy1 und dann steht das Ergebnis in hugo drin.
Ansonsten finde ich Parameterstyle general einfacher zu handeln, da ist die SQL Schnittstelle identisch mit der Programm Schnittstelle.
D*B
 Zitat von Fuerchau
@Andreas
Funktionen können aber nur 1 Wert zurückgeben und, wie du schon sagst, muss ich einen Select verwenden.
Similar Threads
-
By olafu in forum IBM i Hauptforum
Antworten: 4
Letzter Beitrag: 05-10-06, 08:13
-
By andreas.lundschien in forum IBM i Hauptforum
Antworten: 3
Letzter Beitrag: 05-09-06, 14:55
-
By User in forum IBM i Hauptforum
Antworten: 8
Letzter Beitrag: 26-01-05, 20:52
-
By reraru in forum IBM i Hauptforum
Antworten: 13
Letzter Beitrag: 18-01-05, 13:06
-
By Salvi in forum IBM i Hauptforum
Antworten: 7
Letzter Beitrag: 21-05-04, 07:44
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