我想用。从存储过程中调用sql脚本就像这样......
delimiter ///
create procedure append_procedure()
BEGIN
\. test.sql;
END; ///
delimiter ;
我收到了“未能打开'test.sql;' “我以这种方式运行时出错。我也试过了!但后来我得到了一个拒绝许可的错误。但是,我无法消除;或者整件事都破了。有办法解决这个问题吗?
我做错了什么?
答案 0 :(得分:5)
有一组内置于mysql客户端的命令。它们记录在“mysql
Commands”下。这些包括DELIMITER,SOURCE,HELP,CONNECT,USE,QUIT等。
\.
(或SOURCE
)命令是其中一个内置命令。 您无法以编程方式执行这些内置命令,也无法在存储过程中执行这些内置命令。
尝试使用execl()
从C程序运行内置的UNIX shell。
Web浏览器中可能有一个不同的类比,您可以在其中键入由浏览器应用程序本身处理的特殊请求,如“about:
”;这些不会导致对远程网站的任何HTTP请求。
此外,如果您可以从存储过程中获取脚本,那将无济于事,因为脚本本身可能包含一堆mysql客户端内置的命令,因此无法由存储过程运行。
另见我对这些相关问题的回答:
答案 1 :(得分:0)
如果您使用的是Sql Server 2005,则可以使用xp_cmdshell命令。
http://msdn.microsoft.com/en-us/library/ms175046(SQL.90).aspx
或
http://www.sqlservercentral.com/articles/Administering/scriptscheduling/450/