2009-02-13 8 views
8

möchte ich verwenden. SQL-Skript aus einer gespeicherten proc wie so ...ist es möglich, ein SQL-Skript von einer gespeicherten Prozedur in einem anderen SQL-Skript aufzurufen?

delimiter /// 
create procedure append_procedure() 
BEGIN 
\. test.sql;  
END; /// 
delimiter ; 

Ich erhalte eine „nicht geöffnet nennen test.sql; ' "Fehler wenn ich es so führe. Ich habe es auch versucht! aber dann bekomme ich eine Erlaubnis verweigert Fehler. Allerdings kann ich das nicht beseitigen; oder das Ganze ist kaputt. Gibt es einen Weg dahin?

Was mache ich falsch?

Antwort

5

Es gibt eine Reihe von Befehlen, die der MySQL-Client gebautet werden. Sie sind unter "mysql Commands" dokumentiert. Dazu gehören DELIMITER, SOURCE, HELP, CONNECT, USE, QUIT etc.

Der \. (oder SOURCE) Befehl ist einer dieser Builtins. Sie können diese integrierten Befehle weder programmgesteuert noch in einer gespeicherten Prozedur ausführen.

Es wäre wie der Versuch, eine UNIX-Shell aus einem C-Programm mit execl() gebaut laufen zu lassen.

Eine andere Analogie könnte in einem Webbrowser sein, wo Sie spezielle Anfragen wie "about:" eingeben können, die von der Browser-App selbst behandelt werden; Diese führen zu keiner HTTP-Anforderung an eine Remote-Website.

Es wäre auch nicht hilfreich, wenn Sie ein Skript aus einer gespeicherten Prozedur heraus beziehen könnten, da das Skript wahrscheinlich eine Reihe von Befehlen enthält, die mysql-Client-Builtins sind und daher nicht vom gespeicherten proc ausgeführt werden können.


Siehe auch meine Antworten auf diese Fragen:

+0

so, sagen Sie, dass es keine Möglichkeit gibt, dies zu tun? oder dass ich es einfach nicht mit \ benutzen kann? –

+0

Es gibt keine Möglichkeit, dass ein gespeicherter Proc ein Skript eingibt oder viele der Befehle im Skript ausführt, selbst wenn Sie ihn verwenden könnten. –