[NEWSboard IBMi Forum]
  1. #1
    Join Date
    Sep 2018
    Posts
    91

    Zugriff von Node.js via Stored Procedure auf i5

    Hallo,

    wir wollen von Node.js aus via Stored Procedure und ODBC auf ein RPGLE-Programm zugreifen um Daten zu ermitteln.

    Ganz grob funktioniert das wie folgt:

    Es kommt eine Anfrage von Node.js via Stored Procedure auf die i5. Dort werden die Daten ermittelt und wieder zurückgegeben.

    Die Anfrage (es werden 2 Parameter übergeben) kommt korrekt an. Nach der beendigung meines Programmes kommen die Werte jedoch nicht im Zielsystem an.

    Ich poste mal den Code:

    =============================

    var sql = `CALL PPSO.SP_KNKTON1(?,?)`

    odbc.connect(dsn, (error, connection) => {
    connection.query(sql, ['DE',''], function(err, result) {
    if(err) {
    console.log(err)
    } else {
    console.log(result)
    }
    connection.close()
    })
    });
    =========================

    es wurde auch so versucht:

    =========================

    async function callProcedureExample(res) {
    const dsn = "DSN=NodeJS;UID=XXXX;PWD=XXXX"
    try {
    const connection = await odbc.connect(dsn);
    const result = await connection.callProcedure(null, 'PPSO', 'SP_KNKTON1', ['DEcdeabcde', 'abcdeabcde']);
    console.log(result);
    } catch(err) {
    console.log(err)

    =========================

    Beides funktioniert leider nicht!

    Die Console zeigt folgendes an:


    =========================

    Statement: 'CALL PPSO.SP_KNKTON1(?,?)'
    parameters: [ 'DE', '' ],
    return: undefined,
    count: 0,
    columns: ]

    =========================

    Fakt ist, dass das ILE-Programm sauber funktioniert, der Aufruf korrekt ist (die Parameter werden übergeben), jedoch im rufenden System nichts zurückkommt.

    Hat jemand eine Ahnung warum die Rückgabe nicht funktioniert? Via. PHP-Script funktioniert es einwandfrei!


  2. #2
    Join Date
    Feb 2001
    Posts
    19.645
    Wenn die Funktion einen Return zurückgeben soll dann per :

    call ? function(?, ?)

    Der 1. Parameter ist dann der Return.
    Alternativ geht aber auch einfach:

    values(function(?, ?))

    Dies entspricht der Kurzform "select function(?, ?) from sysibm.sysdummy". Du bekommst dann also ein Resultset zurück, dass genau 1 Satz mit dem Ergebnis enthält.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: http://www.fuerchau.de/software/upload400.htm
    BI? Da war doch noch was: http://www.ftsolutions.de

  3. #3
    Join Date
    Nov 2020
    Posts
    192
    Eine SQL Prozedur hat keinen Rückgabewert, außer ein Result-Set einer SQL Abfrage.
    Die Rückgabewerte werden über die Parameter (IN, INOUT, OUT) definiert.
    Dementsprechend wären von mir mal die Fragen:
    * Wie ist das RPG definiert (Parameter, Rückgabewerte falls Prozedur)
    * Wie ist die SQL Prozedur definiert (IN/OUT Parameter)
    * Im NodeJS müssen dann die Parameter mit einer Variable gebunden werden, sodass du dann dort die Rückgabewerte der Parameter hinein bekommst.

    Anders sieht es dann bei einer SQL Funktion aus.

    lg Andreas

Similar Threads

  1. Zugriff auf oracle-db im Netzt mit OracleDB Node.Js Module
    By Peet in forum NEWSboard Programmierung
    Replies: 6
    Last Post: 16-04-20, 20:04
  2. Fehler bei Stored Procedure
    By KM in forum NEWSboard Programmierung
    Replies: 7
    Last Post: 25-11-17, 10:09
  3. Stored Procedure endlos
    By lorenzen in forum IBM i Hauptforum
    Replies: 4
    Last Post: 12-12-02, 16:46
  4. Java stored procedure
    By Sven Schneider in forum IBM i Hauptforum
    Replies: 1
    Last Post: 03-09-02, 07:31
  5. Stored Procedure
    By lorenzen in forum IBM i Hauptforum
    Replies: 6
    Last Post: 27-08-02, 14:59

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •