Ich möchte einen einzelnen Wert in eine Variable AUSWÄHLEN. Ich hatte versucht zu folgen:
DECLARE myvar INT(4);
- gibt sofort einen Syntaxfehler zurück.
SELECT myvalue
FROM mytable
WHERE anothervalue = 1;
- gibt eine einzelne Ganzzahl zurück
SELECT myvalue
INTO myvar
FROM mytable
WHERE anothervalue = 1;
- funktioniert nicht, auch versucht @myvar
Ist es möglich, DECLARE außerhalb gespeicherter Prozeduren oder Funktionen zu verwenden?
Vielleicht verstehe ich das Konzept der Benutzervariablen einfach nicht ... Ich habe gerade versucht:
SELECT myvalue INTO @var FROM `mytable` WHERE uid = 1;
SELECT @var;
... was genau so funktioniert hat, wie es soll. Aber wenn ich jede Abfrage gleichzeitig ausführe, bekomme ich nur @var NULL.
quelle
Am Ende war eine gespeicherte Prozedur die Lösung für mein Problem. Folgendes hat geholfen:
quelle
Diese Antworten decken MULTIPLE-Variablen nicht sehr gut ab.
Durch die Inline-Zuweisung in einer gespeicherten Prozedur werden diese Ergebnisse AUCH in der Ergebnismenge zurückgesendet. Das kann verwirrend sein. So verwenden Sie die SELECT ... INTO-Syntax mit mehreren Variablen:
Das SELECT darf nur 1 Zeile zurückgeben, daher LIMIT 1, obwohl dies nicht immer notwendig ist.
quelle
Sie können auch SET anstelle von DECLARE verwenden
quelle
Pro die MySQL - Dokumentation funktioniert nur am Anfang eines ERKLäREN BEGIN ... END - Blockes wie in einem gespeicherten Programm.
quelle
syntax error, missing ;
Fehler für mich verursacht.Sie müssen keine Variable in MySQL deklarieren. Der Typ einer Variablen wird automatisch bestimmt, wenn ihr zum ersten Mal ein Wert zugewiesen wird. Der Typ kann einer der folgenden sein: Ganzzahl-, Dezimal-, Gleitkomma-, binäre oder nicht-binäre Zeichenfolge oder NULL-Wert. Weitere Informationen finden Sie in der Dokumentation zu benutzerdefinierten Variablen:
http://dev.mysql.com/doc/refman/5.0/en/user-variables.html
Mit SELECT ... INTO können Sie einer Variablen Spalten zuweisen:
http://dev.mysql.com/doc/refman/5.0/en/select-into-statement.html
Beispiel:
quelle
Es ist erwähnenswert, dass trotz der Tatsache, dass Sie
SELECT INTO
globale Variablen wie:SELECT ... INTO @XYZ ...
Sie können nicht verwenden
FETCH INTO
globale Variablen wie:FETCH ... INTO @XYZ
Sieht so aus, als wäre es kein Fehler . Ich hoffe es wird jemandem helfen ...
quelle
Ich verwende Version 6 (MySQL Workbench Community (GPL) für Windows Version 6.0.9, Version 11421, Build 1170) unter Windows Vista. Ich habe kein Problem mit den folgenden Optionen. Wahrscheinlich haben sie es behoben, seit diese Jungs vor drei Jahren die Probleme hatten.
Alle oben genannten Optionen geben mir ein korrektes Ergebnis.
quelle
Wenn Sie gerade mit solchen Problemen arbeiten, versuchen Sie einfach, einen Alias für die Tabelle zu erstellen. Dies sollte der Trick sein, z.
Es hat bei mir funktioniert.
Prost.
quelle
Möglicherweise verpassen Sie das @ -Symbol vor Ihrem Wert
select 'test' INTO @myValue
.quelle
SELECT c1, c2, c3, ... INTO @ v1, @ v2, @ v3, ... FROM table_name WHERE Bedingung;
quelle