存储过程和准备语句之间有什么区别......哪一个更好,为什么...... !!我试图谷歌但没有更好的文章......
答案 0 :(得分:41)
存储过程是PL / SQL语言中的一系列指令。是一种由某些DBMS实现的编程语言,它允许您存储经常应用于模型的查询序列,并与应用程序层共享处理负载。
预准备语句是使用占位符而不是实际值编写的查询。您编写查询并且它只由DBMS编译一次,然后您只需将值传递到占位符。使用预准备语句的优点是可以显着提高性能,并保护您的应用程序免受SQL注入。
不同之处在于你无法存储准备好的陈述。每次需要执行时,您必须“准备”它们。另一方面,存储过程可以存储,与模式相关联,但您需要知道PL / SQL才能编写它们。
您必须检查您的DBMS是否支持它们。
两者都是非常有用的工具,您可能想要合并。
希望这个简短的解释对你有用!
答案 1 :(得分:10)
存储过程存储在数据库中 - 具体取决于在服务器上创建它时编译并可能已经过优化的数据库(Oracle,MS SQL Server等)...
预准备语句是一个由服务器解析的语句,执行计划由服务器在运行语句时准备好执行...通常在语句运行多次时才有意义...取决于数据库服务器(Oracle等)甚至有时配置选项,这些“准备”是特定于会话或“全局”......
比较这两者时没有“更好”,因为它们具有特定的用例......
答案 2 :(得分:6)
其他答案暗示了这一点,但我想明确列出优点和缺点:
存储过程
优点:
CONS
准备好的陈述
赞成
CONS
对于我的钱,我每次都会使用存储过程,因为它们只需要编写和编译一次。在此之后,每次调用该过程都会节省时间,无论您是否使用新连接,以及是否在循环中调用该过程。唯一的缺点是需要花一些时间学习编程语言。如果我没有编写存储过程的权限,我会使用预准备语句,但前提是我必须在同一个会话中多次重复进行相同的查询。
这是我在对这两种结构之间的差异进行了几个月的研究之后得出的结论。如果有人能够纠正我正在做出的错误概括,那么声誉的损失将是值得的。