[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    Dec 2006
    Beiträge
    15
    Hallo Birgitta

    viele Dank für deine schnelle Antwort. Die UDF funktioniert jetzt. Ich habe den Parameter als VARCHAR definiert, da der Cast in der Anwendung etwas umständlich ist.

    Peder

  2. #2
    Registriert seit
    Dec 2006
    Beiträge
    15
    Hallo

    eine Frage habe ich noch zum gleichen Thema. Die gleiche Funktion als Externe UDF scheitert auch bei der Übergabe des 2. Parameters. Im Debug, sehe ich, dass die Parameter 1 und 3 korrekt sind, der 2. enthält einen falschen Wert.

    Hier die Definition der Funktion:
    Create Function cmxtblobj/S_R_TBL
    (FIR CHAR(3), SAR VARCHAR(3), RKEY CHAR(10))
    Returns CHAR(64)
    Language RPGLE
    Specific S_R_TBL
    Not Deterministic
    No SQL
    DisAllow Parallel
    External Name 'CMXTBLOBJ/TBLPROT(S_R_TBL)'
    Parameter Style SQL

    und hier die Defintion der Paramter in der Prozedur:

    d s_r_tbl pr like($t2inh)
    d pr$fir like($t2fir)
    d pr$infa like($t2sar)
    d pr$key like($t2key)
    **
    p s_r_tbl b export
    d s_r_tbl pi like($t2inh)
    d pr$fir like($t2fir)
    d pr$infa like($t2sar)
    d pr$key like($t2key)
    d pr$out s like($t2inh)


    Die Like's verweisen alle auf entsprechende Char-Felder.

    Vielen Dank
    Peder

  3. #3
    Registriert seit
    Aug 2001
    Beiträge
    2.928
    Hallo Peder,

    anstatt die Funktion zu ändern hättes Du eine weitere Funktion generieren können, die auf der ersten Funktion basiert und nur mit abweichenden Parametern definiert ist. (Sourced Function)

    Bei sourced Function wird nichts anderes gemacht, als die Parameter gecasted und anschließend die Basis-Funktion aufgerufen.

    Damit wird die Funktion überladen und kann sowohl mit CHAR als auch VARCHAR-Datentyp für den 2. Parameter aufgerufen werden.

    PHP-Code:
    Create Function cmxtblobj/S_TBLREAD 
          
    (FIR CHAR(3), SAR VARCHAR(3), RKEY CHAR(10)) 
           
    Returns CHAR(64
           
    Specific cmxtblobj/S_TBLREAD1
           Source Specific cmxtblobj
    /S_TBLREAD
    Das Problem mit der externen Funktion liegt darin, dass VARCHAR empfangen wird, RPG jedoch CHAR erwartet. Ich denke auch hier kann eine Sourced Function weiterhelfen.

    Birgitta
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 5. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

Similar Threads

  1. Antworten: 11
    Letzter Beitrag: 18-07-16, 09:49
  2. udf ohne ergebniss
    By ILEMax in forum NEWSboard Programmierung
    Antworten: 25
    Letzter Beitrag: 18-09-06, 13:39
  3. SQL UDF Function ausführung mit Fehler
    By jakarto in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 24-07-06, 13:41
  4. SQL UDF Prob mit leeren Feldern
    By HACHIMAN in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 22-05-06, 09:48
  5. libl ändern in UDF
    By waro in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 13-05-05, 18:02

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •