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?
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.
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%Die Verwendung von Backticks in der MySQL-Abfragesyntax ist hier dokumentiert:
Also, dein erstes Beispiel (mit Backticks) ist korrekt.
oder verwenden Sie so etwas:
%Vor%Spalte & amp; Wert sind TEXT Benutzer sind INT
Tags und Links mysql stored-procedures parameters