-
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
-
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
-
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.
-
... 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 von Xanas
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.
-
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
-
By olbe in forum NEWSboard Programmierung
Antworten: 4
Letzter Beitrag: 19-08-08, 13:35
-
By HDPSTANEKE in forum NEWSboard Programmierung
Antworten: 1
Letzter Beitrag: 21-06-07, 14:33
-
By loeweadolf in forum NEWSboard Programmierung
Antworten: 2
Letzter Beitrag: 01-06-06, 09:43
-
By florian in forum IBM i Hauptforum
Antworten: 10
Letzter Beitrag: 17-05-06, 16:08
-
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
-
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