I'd like to use . to call sql script from inside a stored proc like so...
delimiter ///
create procedure append_procedure()
BEGIN
\. test.sql;
END; ///
delimiter ;
I'm getting a "failed to open 'test.sql;' " error when I run it this way. I've also tried ! but then I get a permission denied error. However, I can't eliminate the ; or the whole thing is broken. Is there a way around this?
What am I doing wrong?
There is a set of commands that are builtin to the mysql client. They're documented under "mysql
Commands." These include DELIMITER, SOURCE, HELP, CONNECT, USE, QUIT, etc.
The \.
(or SOURCE
) command is one of these builtins. You can't execute these builtin commands programmatically, nor from within a stored procedure.
It'd be like trying to run a UNIX shell builtin from a C program using execl()
.
A different analogy might be in a web browser, where you can type in special requests like "about:
" that are handled by the browser app itself; these don't result in any HTTP request to a remote web site.
Also, it wouldn't help if you could source a script from within a stored procedure, because the script itself likely contains a bunch of commands that are mysql client builtins, and thus cannot be run by the stored proc.
See also my answers to these related questions:
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With