czy można wywołać skrypt sql z procedury składowanej w innym skrypcie sql?

Chciałbym użyć . aby wywołać skrypt sql z wnętrza przechowywanej procedury, tak jak...

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

Otrzymuję komunikat „nie udało się otworzyć 'test.sql;' " błąd, gdy uruchamiam go w ten sposób. Próbowałem też ! ale potem otrzymuję błąd odmowy pozwolenia. Nie mogę jednak wyeliminować ; lub cała rzecz jest zepsuta. Czy można to obejść?

Co ja robię źle?


person Yevgeny Simkin    schedule 13.02.2009    source źródło


Odpowiedzi (2)


Istnieje zestaw poleceń wbudowanych w klienta mysql. Są one udokumentowane w sekcji „mysql Polecenia". Należą do nich DELIMITER, SOURCE, HELP, CONNECT, USE, QUIT itp.

Polecenie \. (lub SOURCE) jest jednym z tych wbudowanych. Tych wbudowanych poleceń nie można wykonać programowo ani z poziomu procedury składowanej.

To byłoby jak próba uruchomienia wbudowanej powłoki systemu UNIX z programu w C przy użyciu execl().

Inną analogią może być przeglądarka internetowa, w której można wpisywać specjalne żądania, takie jak „about:”, które są obsługiwane przez samą aplikację przeglądarki; nie powodują one żadnych żądań HTTP do zdalnej witryny internetowej.

Ponadto nie pomogłoby, gdybyś mógł zaczerpnąć skrypt z procedury składowanej, ponieważ sam skrypt prawdopodobnie zawiera kilka poleceń, które są wbudowanymi poleceniami klienta mysql, a zatem nie mogą być uruchamiane przez procedurę składowaną.


Zobacz także moje odpowiedzi na te powiązane pytania:

person Bill Karwin    schedule 13.02.2009
comment
więc mówisz, że nie ma na to sposobu? lub że po prostu nie mogę tego zrobić za pomocą \.? - person Yevgeny Simkin; 16.02.2009
comment
Nie ma sposobu, aby przechowywany proces mógł pozyskać skrypt, ani uruchomić wielu poleceń w skrypcie, nawet jeśli mógłbyś go pozyskać. - person Bill Karwin; 16.02.2009

Jeśli korzystasz z Sql Sevrer 2005, możesz użyć polecenia xp_cmdshell.

http://msdn.microsoft.com/en-us/library/ms175046(SQL.90).aspx

Or

http://www.sqlservercentral.com/articles/Administering/scriptscheduling/450/

person matt_dev    schedule 13.02.2009
comment
ale myślę, że chce go dla mysql - person Gulzar Nazim; 14.02.2009
comment
tak, niestety jestem związany z mySQL. - person Yevgeny Simkin; 16.02.2009
comment
@GeniaS. Szczerze wątpię, aby licencja Microsoft SQL Server od 3K do 15K była warta możliwości wywołania skryptu z procedury składowanej... (a ponieważ używałem MS SQL Server nawet częściej niż MySQL, ale miałem doświadczenie z obydwoma: nie ma żadnych inne funkcje, które są warte swojej ceny lub wymaganie działania na drogim systemie operacyjnym Windows Server) - person MER; 11.01.2016