我正在尝试使用MySQL和PHP学习和使用SP(存储过程)和UDF(用户定义函数)。 SP和UDF有什么区别?目的是什么?
如果一个简单的代码片段在PHP和SQL中看起来如何,而SP正在更新,编写或从MySQL数据库中的表中获取内容?需要了解并了解使用SP和UDF的重点。
提供帮助!谢谢!
答案 0 :(得分:4)
存储过程是由MySQL编写并执行的MySQL代码。
存储功能的示例
CREATE FUNCTION AreWeThereYet(Location integer) RETURNS boolean
BEGIN
Return 0;
END
存储过程示例
CREATE PROCEDURE InsertRow(A integer)
BEGIN
INSERT INTO table1 VALUES(A);
END
UDF是C(++)或类似的代码,编译为.so (linux)或.dll (windows)
使用如下命令插入MySQL:
CREATE FUNCTION metaphon RETURNS STRING SONAME 'udf_example.so'; //linux
CREATE FUNCTION metaphon RETURNS STRING SONAME 'udf_example.dll'; //windows
<强>小结强>
UDF很复杂,存储过程很简单
你可以在SO中找到很多关于存储过程的例子
因为UDF更复杂,所以如果你发现存储的函数/存储过程不再适合你,我只会使用它们(缓慢/不够强大等等)
<强>链接强>
有关存储过程的更多信息,请参阅:
http://dev.mysql.com/doc/refman/5.1/en/stored-routines.html
有关UDF的更多信息,请参阅:
http://dev.mysql.com/doc/refman/5.1/en/udf-compiling.html
关于存储过程的好SO问题
调试:How do you debug MySQL stored procedures?
与php一起使用?:Should PHP developers use MySQL's stored procedures?
观点还是sproc?:MySQL: Views vs Stored Procedures
使用sproc进行更新:mysql procedure to update numeric reference in previous rows when one is updated
在sproc中提出和处理错误:How to raise an error within a MySQL function
如何从php调用存储过程
这真的只是另一个查询
-- normal select
$query = "SELECT * FROM table1";
-- call to stored proc
$query = "CALL InsertARow('1')";
-- use a stored function
$query = "SELECT AreWeThereYet('10')";
-- or
$query = "SELECT * FROM table1 WHERE AreWeThereYet(field1) = '1' ";
祝你好运。