【发布时间】:2011-08-18 19:31:36
【问题描述】:
我正在尝试通过 MySQL 和 PHP 学习和使用 SP(存储过程)和 UDF(用户定义函数)。 SP和UDF有什么区别,目的是什么?
一段简单的代码在 PHP 和 SQL 中看起来如何,其中 SP 正在更新、写入或从 MySQL 数据库中的表中获取某些内容?需要了解并看到使用SP和UDF的要点。
感谢您的帮助!谢谢!
【问题讨论】:
标签: php mysql sql user-defined-functions
我正在尝试通过 MySQL 和 PHP 学习和使用 SP(存储过程)和 UDF(用户定义函数)。 SP和UDF有什么区别,目的是什么?
一段简单的代码在 PHP 和 SQL 中看起来如何,其中 SP 正在更新、写入或从 MySQL 数据库中的表中获取某些内容?需要了解并看到使用SP和UDF的要点。
感谢您的帮助!谢谢!
【问题讨论】:
标签: php mysql sql user-defined-functions
存储过程是由 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 是编译为 .so (linux) 或 .dll (windows)
的 C(++) 或类似代码您可以使用以下命令将其插入 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?
视图或存储过程?: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' ";
祝你好运。
【讨论】:
select arewethereyet(10),这是最简单的方法。