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

时间:2009-02-13 22:16:45

标签: mysql stored-procedures scripting

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

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

我收到了“未能打开'test.sql;' “我以这种方式运行时出错。我也试过了!但后来我得到了一个拒绝许可的错误。但是,我无法消除;或者整件事都破了。有办法解决这个问题吗?

我做错了什么?

2 个答案:

答案 0 :(得分:5)

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

\.(或SOURCE)命令是其中一个内置命令。 您无法以编程方式执行这些内置命令,也无法在存储过程中执行这些内置命令。

尝试使用execl()从C程序运行内置的UNIX shell。

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

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


另见我对这些相关问题的回答:

答案 1 :(得分:0)