[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    Aug 2001
    Beiträge
    2.934
    Hallo Stefan,

    werden alphanumerische Ausdrücke in einem Funktions-Aufruf angegeben, werden diese Ausdrücke als alphanumerische Datentypen mit variabler Länge (VARCHAR) interpretiert.

    Da Funktionen überladen werden können, d.h. der gleiche Funktions-Name kann mit unterschiedlicher Parameter-Defintion mehrfach verwendet werden können und für SQL CHAR und VARCHAR unterschiedliche Datentypen sind, wird die Funktion nicht gefunden. SQL sucht nach einer Funktion, deren Parameter VARCHAR ist. Um dieses Problem zu umgehen, musst Du den alphanumerischen Ausdruck in einen Parameter mit fixer Länge umwandeln.
    Dies geschieht entweder durch die Verwendung der skalaren Funktion CHAR oder durch CAST.
    (CAST sollte aufgrund des SQL-Standards bevorzugt werden.)

    PHP-Code:
    select LLERZBEZ(Cast('1811344' as Char(35))) 
       
    from llart 
       where arphznr 
    '1811344' 
    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

  2. #2
    Registriert seit
    May 2005
    Beiträge
    55
    super erklärung
    ich wollte nämlich schon fragen obs möglich ist die parameter per value zu übergeben.

    hat sich somit erledigt

  3. #3
    Registriert seit
    Feb 2001
    Beiträge
    20.748
    Durch SQL werden die Parameter immer per Value übergeben. Mit den Variablen kann man beliebig arbeiten, da SQL die Inhalte niemals zurückgibt.

    Aber Vorsicht:
    SQL-Funktionen sind ganz normale Programme/Prozeduren, die auch per CALL aufgerufen werden können.
    In diesem Fall muss der Prototyp die VALUE-Klausel enthalten damit der RPG-Compiler Kopierroutinen einbaut.
    Sonst würden die Parameter per Reference übergeben (was es eigentlich immer ist) und Änderungen der Inhalte nach oben wirken !!!
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    20.748
    Die Namenskonvention ist default SQL. Dadurch ergibt sich als Trenner der Punkt.
    Mittels "set option ..." können diverse Ergänzungen gemacht werden die ggf. nicht unwichtig sind.
    Insbesonders eben
    naming=*sql/*sys
    dftrdbcol=libxxx <= Bei *sql eben USER, bei *sys=*LIBL
    commit=*none/*chg/... <= Bei Updates ganz wichtig
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

Similar Threads

  1. SQL UDF Function ausführung mit Fehler
    By jakarto in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 24-07-06, 14:41
  2. SQL Problem
    By Lucky4712 in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 24-05-06, 16:57
  3. CREATE SQL FUNCTION
    By Xanas in forum NEWSboard Programmierung
    Antworten: 1
    Letzter Beitrag: 23-02-06, 11:29
  4. Problem bei Abfrage bei Imbedded SQL
    By cbe in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 08-06-05, 17:21
  5. embedded SQL Performance Problem mit SCROLL
    By itec01 in forum IBM i Hauptforum
    Antworten: 9
    Letzter Beitrag: 16-09-04, 19:38

Berechtigungen

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