我想从PHP执行'CREATE PROCEDURE'
命令。有没有办法在PHP连接上更改MySQL DELIMITER
?当然,我知道如何在控制台会话中执行此操作,但我想从PHP中执行此操作。我希望能够动态创建存储过程,为此我认为我需要能够将DELIMITER from ;
重置为其他东西,以便MySQL理解我的'CREATE PROCEDURE'
定义中的分号是不是整个陈述的结束。
我以为我可能会被告知这是一个疯狂的事情(我仍然可以)但我找到了这个
https://dev.mysql.com/doc/connector-net/en/connector-net-tutorials-mysqlscript-delimiter.html
这似乎正是我正在寻找的,除了它的.NET而不是PHP。
这是我正在生成并希望动态执行的代码示例
DELIMITER $$
CREATE PROCEDURE `usp_update_1_8` (IN p_intClientID int(11) , IN p_8 varchar(30) ,OUT p_row_count INT )
BEGIN
UPDATE tblDriver_Audit SET q_8 = IFNULL(p_8, q_8), dtmLastChanged = NOW() WHERE intClientID = p_intClientID;
SELECT ROW_COUNT() INTO p_row_count; END; $$
DELIMITER ;
如果我把它全部放在一行上,我告诉它语法错误。如果我试着把它放到准备好的陈述中,我会得到
Error Code: 1295. This command is not supported in the prepared statement protocol yet
我也尝试过使用多查询,但又出现了语法错误,我试图执行三个语句"分开(即DELIMITER-then-CREATE PROCEDURE-then-DELIMITER
)。
有办法做到这一点吗?