Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

stored procedure -> mehrere Datensätze als Rückgabewert

79 views
Skip to first unread message

thomas kost

unread,
Mar 23, 2004, 5:06:36 PM3/23/04
to
hallo

( benutze Visual Studio 6.0 c++ )


ich hab auf dem MYSQL Server folgende (beispiel )prozedur errichtet:

->create procedure test(in param1 date, out param2 date)
->select date(DATUM) into param2 from TESTTAB where date(DATUM) = param1

jetzt ist das problem das diese prozedure (warscheinlich) immer nur einen
wert zurückgeben kann und kein array oder so was ähnliches also sobald mehr
als ein Datensatz gefunden wird, is schluss.
Bei MS SQL server kann ich alle Datensätze (da -> ....({? = call
test(param1, param2 );}) nach Aufruf von SQLExecute...anschliessend
nacheinander mit SQLFetch auslesen.
Gibt es eine ähliche Möglichkeit für MYSQL oder irgend andere Alternative?

würde mich sehr über Hilfe freuen
danke im Voraus

Peter Gulutzan

unread,
Mar 24, 2004, 5:53:33 PM3/24/04
to
j.hu...@freenet.de (thomas kost) wrote in message news:<183173c9.04032...@posting.google.com>...

Eine Alternative, vielleicht:

mysql> show variables like 'version'//
+---------------+-------------------+
| Variable_name | Value |
+---------------+-------------------+
| version | 5.0.1-alpha-debug |
+---------------+-------------------+
1 row in set (0.00 sec)

mysql> create table t (s1 int);
Query OK, 0 rows affected (0.35 sec)

mysql> insert into t values (1),(2),(3);
Query OK, 3 rows affected (0.00 sec)
Records: 3 Duplicates: 0 Warnings: 0

mysql> delimiter //

mysql> create procedure p (out p1 int, out p2 int, out p3 int, out p4
int) begin declare cc cursor for select s1 from t; declare exit
handler for not found begin end; open cc; fetch cc into p1; fetch cc
into p2; fetch cc into p3; fetch cc into p4; close cc; end;//
Query OK, 0 rows affected (0.01 sec)

mysql> call p(@p1,@p2,@p3,@p4)//
Query OK, 0 rows affected (0.00 sec)

mysql> select @p1,@p2,@p3,@p4//
+------+------+------+------+
| @p1 | @p2 | @p3 | @p4 |
+------+------+------+------+
| 1 | 2 | 3 | NULL |
+------+------+------+------+
1 row in set (0.00 sec)

Peter Gulutzan
MySQL AB

thomas kost

unread,
Mar 25, 2004, 2:33:31 AM3/25/04
to

Hallo Peter

dank für deinen Vorschlag .... lässt sich aber bei mir nur schwer
verwenden da ich nicht weiss viele potentielle Datensätze selektiert
werden.

Mittlerweile vermute ich mal das der gegenwärtige ODBC-Treiber
(MyODBC-3.51.06-dll) nicht mehrere Ergebnisse zurückliefern kann.
->("select in a stored procedure must have into") <- Fehlermeldung
Auf der MYSQL-Console lässt sich ja die Prozedur (incl.-- select *
from table)ausführen und sie liefert auch alle Datensätze.
Werd mal sehen ob eine andere Schnittstelle zu Mysql funktioniert.
(MYSQL++ ?)
Falls da jemand positive Erfahrungen in Bezug auf mein Problem hat,
würde ich mich freunen wenn er dies posted.

tschüss
thomas

thomas kost

unread,
Mar 25, 2004, 2:58:00 AM3/25/04
to

Hallo Peter

0 new messages