我想用.从存储过程中调用sql脚本就像这样...
delimiter /// create procedure append_procedure() BEGIN \. test.sql; END; /// delimiter ;
我得到了"未能打开'test.sql;' "我以这种方式运行时出错.我也试过了!但后来我得到了一个拒绝许可的错误.但是,我无法消除; 或者整件事都破了.有没有解决的办法?
我究竟做错了什么?
有一组内置于mysql客户端的命令.它们记录在" mysql
命令 " 下.这些包括DELIMITER,SOURCE,HELP,CONNECT,USE,QUIT等.
的\.
(或SOURCE
)命令是这些建宏之一. 您不能以编程方式执行这些内置命令,也不能在存储过程中执行这些内置命令.
这就像尝试使用C语言运行内置的UNIX shell execl()
.
一个不同的类比可能是在Web浏览器中,您可以在其中键入about:
由浏览器应用程序本身处理的特殊请求,如" "; 这些不会导致对远程网站的任何HTTP请求.
此外,如果您可以从存储过程中获取脚本,那将无济于事,因为脚本本身可能包含一堆mysql客户端内置的命令,因此无法由存储过程运行.
另见我对这些相关问题的回答:
在PHP中运行MySQL*.sql文件
从PHP中加载.sql文件
PHP:一个mysql_query语句中的多个SQL查询