verwenden Ich habe eine Frage im Zusammenhang mit der gespeicherten Prozedur. Ich habe eine Tabelle namens account mit einem Feld namens agent. Ich habe eine einfache SQL wie folgt aus:MySQL: Gespeicherte Prozedur in SELECT und FROM
-- First SQL --
SELECT account.agent
FROM account
GROUP BY account.agent
HAVING account.agent > 0
Wenn ich diese über SQL auf eine Tabelle als agent_structure genannt einfügen, kann ich einfach JOIN diese Tabelle mit einer anderen Tabelle (zB Kunde) von SQL wie folgt aus:
-- Second SQL --
SELECT agent_structure.agent,
customer.name,
customer.age,
customer.country
FROM agent_structure
INNER JOIN customer ON agent_structure.agent = customer.id
Das Problem ist, ich möchte nicht eine andere Tabelle nur zum Speichern eines Feldes hinzufügen. Also versuche ich gespeicherte Prozedur zu verwenden. Also habe ich die erste SQL-Prozedur wie folgt aus:
-- FIRST SQL put into Procedure --
CREATE PROCEDURE agent_structure()
SELECT account.agent
FROM account
GROUP BY account.agent
HAVING account.agent > 0
Das sieht sehr gut, da, wenn ich schreibe ‚CALL agent_structure();‘, die SQL-Ausgang die einzige Feld, das ich will. Ich weiß jedoch nicht, wie ich dieses Ergebnis wie in der zweiten SQL verwenden soll. Ich versuche, dieser Attrappe Weg nach Parametern an die Prozedur geben, aber es funktioniert nicht:
-- Second SQL but use stored procedure --
CALL agent_structure(@a);
SELECT @a,
customer.name,
customer.age,
customer.country
FROM @a
INNER JOIN customer ON @a.agent = customer.id
Das Ziel ist wie ein Skript zu einem anderen Skript. Ich möchte das erste Skript nicht direkt in das zweite Skript einfügen, da mein aktuelles Skript größer ist und mehrere Ebenen hat. Kann mir jemand helfen, die Lösung dafür zu finden?
Es ist falsch. # 1064 - Sie haben einen Fehler in Ihrer SQL-Syntax; Fehler Start in 'FROM @a ...' – Tan
@Tan - Verwenden Sie stattdessen Ansicht gespeicherte Prozedur. [Hier] (https://dev.mysql.com/doc/refman/5.7/de/create-view.html) finden Sie weitere Informationen, wie man Views verwendet – kastriotcunaku
Das funktioniert, vielen Dank. Ich habe zwei Fragen: 1) ist es möglich, eine Ansicht zu erstellen, die eine Ansicht innerhalb des Skripts haben? 2) Was sind die Unterschiede bei der Verwendung von Verfahren und Ansicht? – Tan