一尘不染

是否可以从另一个sql脚本中的存储过程中调用sql脚本?

mysql

我想用。像这样从存储的过程中调用sql脚本…

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

我收到“无法打开’test.sql;’的消息” 我以这种方式运行时出错。我也尝试过!但随后出现权限被拒绝错误。但是,我无法消除;;
或整个事情坏了。有没有解决的办法?

我究竟做错了什么?


阅读 378

收藏
2020-05-17

共1个答案

一尘不染

mysql客户端内置了一组命令。它们记录在“
mysql命令
下。这些包括DELIMITER,SOURCE,HELP,CONNECT,USE,QUIT等。

\.(或SOURCE)命令是这些建宏之一。 您不能以编程方式执行这些内置命令,也不能从存储过程中执行。

就像试图使用C从C程序运行内置的UNIX shell一样execl()

在网络浏览器中可能有不同的类比,您可以在其中键入about:由浏览器应用本身处理的特殊请求,例如“ ”;这些不会导致对远程网站的任何HTTP请求。

另外,如果可以从存储过程中获取脚本也无济于事,因为脚本本身可能包含一堆由mysql客户端内置的命令,因此无法由存储过程运行。


另请参阅我对以下相关问题的回答:

2020-05-17