2012-04-11 15 views
0

Nach Googeln für eine Weile habe ich keine Antwort gefunden. Jedenfalls habe ich eine Situation, in einer gespeicherten Prozedur, wo ich ein Set wählen wie:MySql gespeicherte Prozedur SET-Befehl - wenn es Fehler

SET someVariable = (SELECT ...) 

Wie auch immer, aufgrund einiger redundanten Datensätze an anderer Stelle im System vorhandenen, diese SELECT-Abfrage in der SET verwendet gibt mehr als eine Zeile . Ich schätze, das wird Bruch oder Schlechtigkeit verursachen? Wahr falsch?

Danke.

+0

Sie können mehrere Datensätze nicht in skalare Variable übergeben. Schreiben Sie die Abfrage korrekt, um den exakten Datensatz zurückzugeben, oder fügen Sie Daten in eine andere Tabelle ein. – Devart

+0

Das habe ich gemacht. Mir wurde gesagt, dass diese bestimmte Tabelle keine redundanten Einträge hatte und nahm das auf den Nennwert. Dass die Spalte, die ich brauchte, nicht einzigartig war, ist der Grund, warum ich das aufgespürt habe. – kmarks2

Antwort

2

Wahr. Bei der Zuweisung an eine Variable muss die Abfrage eine einzelne Zeile mit einer einzelnen Spalte zurückgeben. Sie können es auch mit dieser Syntax tun:

SELECT someColumn INTO myVariable ... LIMIT 1; 
+0

Und wenn es zwei Zeilen hat, ist es eine Warnung, eine Ausnahme, wird es den Rest meiner Prozedur zum Absturz bringen? Vielen Dank. – kmarks2

+0

Dann gibt MySQL einen Fehler (nicht sicher, welcher, aber vielleicht "Error 1172 - Ergebnis bestand aus mehr als einer Zeile") – bfavaretto

+0

Ehrfürchtig, danke. – kmarks2

Verwandte Themen