【问题标题】:Help with SP and UDF?对 SP 和 UDF 有帮助吗?
【发布时间】:2011-08-18 19:31:36
【问题描述】:

我正在尝试通过 MySQL 和 PHP 学习和使用 SP(存储过程)和 UDF(用户定义函数)。 SP和UDF有什么区别,目的是什么?

一段简单的代码在 PHP 和 SQL 中看起来如何,其中 SP 正在更新、写入或从 MySQL 数据库中的表中获取某些内容?需要了解并看到使用SP和UDF的要点。

感谢您的帮助!谢谢!

【问题讨论】:

    标签: php mysql sql user-defined-functions


    【解决方案1】:

    存储过程

    存储过程是由 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 的

    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' ";
    

    祝你好运。

    【讨论】:

    • 感谢您的信息!嗯,好像很复杂!但是必须有可能使用 CALL 或某种 OUT 参数从 SP 获取信息到 PHP 代码或相反的代码中?我正在做一个关于 PHP 论坛的任务,目标是使用 PHP 和 SP。这就是为什么我很喜欢那会是什么样子?
    • @user637364 要从存储过程中获取内容,我会使用一个函数,然后执行 select arewethereyet(10),这是最简单的方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多