[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Sep 2004
    Beiträge
    136

    sql call procedure

    Hallo,

    ich habe eine Procdure

    create procedure yx (CHAR(10)) ......

    so wenn ich die jetzt mit

    call procedure yx( '1234567890' )

    aufrufe wird die procedure nicht gefunden, weil nach einer procedure mit VARCHAR(10) gesucht wird.

    kann ich das SQL beim call zwingen ein CHAR(10) statt VARCHAR(10) zu verwenden?.

    So bekomme ich allerdings ein Syntaxfehler, geht das überhaupt?
    call procedure yx( CAST( '1234567890' AS CHAR(10))

    Gruß
    xanas

  2. #2
    Registriert seit
    Aug 2001
    Beiträge
    2.873
    Bei Stored Procedures liegt es nicht daran, ob CHAR oder VARCHAR-Parameter übergeben wurden, da lediglich die Anzahl der Parameter und allenfalls auf Compatibilität der Parameter geprüft wird. Deshalb ist ein Casting der Parameter nicht zulässig. (Bei User Defined Functions spielt der Parameter-Typ eine Rolle, da hier anders überladen wird. Beim Aufruf von UDFs ist die Angabe von CAST und anderen Konvertierungs-Funktionen wie CHAR zulässig).

    M.E. stimmt entweder die Bibliotheksliste nicht, wenn Du mit System-Naming arbeitest oder der SQL PATH wurde nicht korrekt gesetzt, wenn mit SQL-Naming gearbeitet wird. SQL-Naming berücksichtigt die Bibliotheksliste nicht!!!

    Birgitta
    Birgitta Hauser

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

  3. #3
    Registriert seit
    Sep 2004
    Beiträge
    136
    Ich muss das Thema noch mal aufgreifen.

    Ich hab eine SQL Function, mit einem Parameter Char erstellt, die wird einfach nicht gefunden, erstelle ich die gleiche Function mit VARCHAR wird sie gefunden, woran liegt das, verstehe ich einfach nicht.

  4. #4
    Registriert seit
    Mar 2002
    Beiträge
    5.287
    ... das overloading (mehrere Procedures/Functions gleicher Name mit unterschiedlicher Parameterschnittstelle) funktioniert für Procedures und Functions unterschiedlich. Am einfachsten erstellt man Functions immer mit Varchar, dann hat man damit kein Problem. Ansonsten ist RTFM manchmal auch ein Tip.

    D*B

    Zitat Zitat von Xanas Beitrag anzeigen
    Ich muss das Thema noch mal aufgreifen.

    Ich hab eine SQL Function, mit einem Parameter Char erstellt, die wird einfach nicht gefunden, erstelle ich die gleiche Function mit VARCHAR wird sie gefunden, woran liegt das, verstehe ich einfach nicht.
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  5. #5
    Registriert seit
    Aug 2003
    Beiträge
    1.508
    bei procedures ist es egal ob du ein VARCHAR oder CHAR feld hast:

    CREATE PROCEDURE MYLIB.TEST1 (
    IN INPUT1 CHAR(10))
    CALL TEST1 ('TEST')

    bei functions ist es nicht egal. also entweder immer mit varchar oder beim aufruf ein cast:

    SELECT TEST( CAST('123' AS CHAR(10))) XX FROM MYLIB.MYFILE

    lg andreas

Similar Threads

  1. SQL Stored Procedure / Bibliotheksliste
    By olbe in forum NEWSboard Programmierung
    Antworten: 4
    Letzter Beitrag: 19-08-08, 13:35
  2. SQL-Fehler -514 beim Aufruf eines variablen SQL über Stored Procedure
    By HDPSTANEKE in forum NEWSboard Programmierung
    Antworten: 1
    Letzter Beitrag: 21-06-07, 14:33
  3. SQL .. for update of (RPG embedded SQL)
    By loeweadolf in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 01-06-06, 09:43
  4. SQL Stored Procedure verschwindet
    By florian in forum IBM i Hauptforum
    Antworten: 10
    Letzter Beitrag: 17-05-06, 16:08
  5. Stored Procedure SQL Cursor Update
    By Jenne in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 14-06-05, 14:00

Berechtigungen

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