MySQL: Wenn der Name der gespeicherten Prozedur den Namen der Tabellenspalte hat

7

Nehmen wir an, eine gespeicherte Prozedur SetCustomerName hat einen Eingabeparameter Name und ich habe eine Tabelle Kunden mit Spalte Name. In meiner gespeicherten Prozedur möchte ich den Namen des Kunden angeben. Wenn ich schreibe

%Vor%

das ist falsch und ich sehe 2 andere Möglichkeiten:

%Vor%

Erstens funktioniert es, aber ich habe in der Dokumentation nicht gefunden, dass ich Parameter in Zeichen einpacken kann. Oder habe ich es in der Dokumentation vermisst (Link wird in diesem Fall geschätzt).

Welche anderen Möglichkeiten gibt es und wie sieht der Standard für einen solchen Fall aus? Das Umbenennen des Eingabeparameters ist nicht gut für mich (weil ich automatische objekt-relationale Zuordnung habe, wenn Sie wissen, was ich meine).

UPDATE:

Also gibt es einen Link über Backticks ( Ссылка ), aber es wird nicht erklärt tief genug, wie man sie benutzt (wie man sie mit Parametern und Spaltennamen benutzt).

Und da ist eine sehr seltsame Sache (zumindest für mich): Sie können Backticks in beide Richtungen verwenden:

%Vor%

und sie arbeiten alle auf die gleiche Weise.

Glaubst du nicht, das ist seltsam? Wird dieses merkwürdige Verhalten irgendwo erklärt?

    
nightcoder 14.05.2009, 22:19
quelle

5 Antworten

14

Der einfachste Weg, um zwischen Ihrem Parameter und der Spalte zu unterscheiden (wenn beide Namen gleich sind) besteht darin, einen Tabellennamen in Ihren Spaltennamen einzufügen.

%Vor%

Sie können auch ein Datenbankpräfix wie

hinzufügen %Vor%

Durch Hinzufügen des Datenbanknamens können Sie eine Aktion für mehr als eine Datenbank aus der Einzelspeicherprozedur ausführen.

    
Ankur Kumar Singh 30.03.2013 14:12
quelle
4

Ich denke, dass dein erstes Beispiel tatsächlich rückwärts ist. Wenn Sie versuchen, die Spalte "Name" auf den Eingabeparameter "Name" zu setzen, sollte dies meiner Meinung nach Folgendes sein:

%Vor%

Und für das zweite Beispiel können Sie Tabellenaliase auf die gleiche Weise wie in allen anderen Anweisungen festlegen:

%Vor%     
Chad Birch 14.05.2009 22:25
quelle
1

Die Verwendung von Backticks in der MySQL-Abfragesyntax ist hier dokumentiert:

Ссылка

Also, dein erstes Beispiel (mit Backticks) ist korrekt.

    
Cody Caughlan 14.05.2009 22:23
quelle
1

Hier ist der Link, nach dem Sie fragen: Ссылка Die Backticks werden in MySql als "Bezeichner Zitat" bezeichnet.

    
Christian 14.05.2009 22:24
quelle
-1

oder verwenden Sie so etwas:

%Vor%

Spalte & amp; Wert sind TEXT Benutzer sind INT

    
web-extreme 29.03.2010 14:43
quelle