Stored Procedure - Aufrufende SQL-Abfrage erhält falschen Datentyp
Hallo, meine Frage ist:
Eine Funktion wurde in MySQL-Administrator erstellt (Stored Procedure). Return-Wert: z.B. 4, 0.25, 2.5 usw. Die Variable tMultiplikator wurde als FLOAT deklariert. Diese wird im Laufe der Funktion mit einem Wert belegt und schlussendlich an RETURN übergeben. Soweit richtig. Nun: Die aufrufende SQL-Abfrage stellt den Wert nur als Ganzzahlwert dar, also z.B. 4, 0, 2 usw. Dazu passt das folgende Zitat von Kofler, PHP 5 & MySQL 5, Addison-Wesley 2006, S. 504: >MySQL macht sich momentan nicht die Mühe, den korrekten Datentyp bei der Übergabe >von Parametern zu überprüfen – aber vielleicht ändert sich das in künftigen Versionen >noch. Frage: Wie kriege ich den Wert richtig übergeben? Hinweis: Server 5.0.51b-community via TCP/IP Client 5.1.11 WinXP SP2 Danke vorab für die Hilfe! |
AW: Stored Procedure - Aufrufende SQL-Abfrage erhält falschen Datentyp
Du musst den korrekten Datentyp bei der Übergabe der Parameter wohl selbst überprüfen.
|
AW: Stored Procedure - Aufrufende SQL-Abfrage erhält falschen Datentyp
Also, wie ich schrieb, hatte ich das ja überprüft.
Und das Ergebnis der Überprüfung war, dass die Übergabe nicht stimmt. Die Antwort hilft mir nicht so wirklich weiter. Schade ... |
AW: Stored Procedure - Aufrufende SQL-Abfrage erhält falschen Datentyp
Zitat:
|
AW: Stored Procedure - Aufrufende SQL-Abfrage erhält falschen Datentyp
Liste der Anhänge anzeigen (Anzahl: 2)
Ok, habe die Funktion (Stored procedure) und die Abfrage reingehängt.
Wäre schön wenn jemand drüber kucken könnte. Danke! PS: Habe die Funktion soweit runtergekürzt, dass der "Fehler", wenn es einer ist, noch vorführbar ist, ohne den Leser mit langen Berechnungen zu langweilen. |
AW: Stored Procedure - Aufrufende SQL-Abfrage erhält falschen Datentyp
Hallo, konnte sich schon jemand meines Problems annehmen?
Vielen Dank nochmal im voraus! |
AW: Stored Procedure - Aufrufende SQL-Abfrage erhält falschen Datentyp
Hm, kann offenbar keiner was anfangen mit meiner Frage.
Schade ... Aber dennoch danke fürs Drüberlesen ... |
Lösung
Die Lösung ist denkbar einfach.
In der ersten Zeile wird der Datentyp definiert, der an die Abfrage übergeben wird. CREATE DEFINER=`Name`@`localhost` FUNCTION `Kapital`(vISIN varchar(30), vDatum DATE) RETURNS int(11) BEGIN ... Richtig muss es also heißen: RETURNS float(10,4) Alles klar, aber danke nochma für die Hilfe. mfg Splitter |
Alle Zeitangaben in WEZ +2. Es ist jetzt 11:09:09 Uhr. |
Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.