【问题标题】:I couldn't understand importance of stored procedures [closed]我无法理解存储过程的重要性 [关闭]
【发布时间】:2015-11-26 23:05:11
【问题描述】:

今天我学习了如何在 MySQL 中创建存储过程。

DELIMETER //
CREATE PROCEDURE new(IN first INT)
BEGIN 
    SELECT * FROM table WHERE first_id= first;
END //

假设我创建了它并从 PHP 中调用它; CALL new('4'); 或者我将我的 sql 命令直接写到 PHP 中

$mysqli->query("SELECT * FROM table WHERE first_id= $first");

我的 PHP 中有 20 个 sql 命令,我正在将它们作为存储过程复制到 phpmyadmin 中。他们没有减少。现在我从存储过程中获得了什么?就几封信?或者???感谢帮助。

【问题讨论】:

  • 如果您问创建存储过程的目的是为了减少复制和粘贴代码的需要。与将任何语言中的重复代码移动到函数中的原因大致相同。假设您有一个 100 行的查询代码块,用于制作临时表、处理数据、循环等,这在您的程序中重复了 5 次。如果您在其中发现错误或让它运行得更好怎么办?您必须将它的所有 5 个实例更改为完全相同,使用存储过程您只需在一个地方执行此操作即可更新所有 5 个实例
  • 在编程中执行此操作的真实示例是将您使用的每个 mysql PHP 函数包装在它自己的函数中并调用它。一开始您可能一直在使用mysql_* 功能,但现在它已贬值,您需要升级到mysqli_*PDO。你认为你调用了多少次你的mysql查询函数?想要更新每一个并冒着丢失的风险?或者只编辑一次你的包装函数来影响它们
  • @BenN 不,我红了它。它没有回答我的问题。我的问题是我应该如何使用 SP。
  • @Memor-X 但是每个 sql 命令都不一样

标签: mysql sql-server stored-procedures


【解决方案1】:

存储过程是在数据库中发生的事情和服务器端逻辑之间构建干净抽象层的好方法。此外,存储过程允许您准确指定要使用的数据类型(数据类型和可能的长度),这有助于提高应用程序的安全性(至少在“从数据库访问数据”这一点上)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-28
    相关资源
    最近更新 更多