Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 前端生成的DML与存储过程执行的插入-更新-删除_Sql_Tsql - Fatal编程技术网

Sql 前端生成的DML与存储过程执行的插入-更新-删除

Sql 前端生成的DML与存储过程执行的插入-更新-删除,sql,tsql,Sql,Tsql,我想知道通过简单CRUD应用程序的存储过程在数据库中执行dml命令(插入、更新、删除)的真正优势。仅仅在前端使用一些生成dml命令的通用过程,这种方法的好处是什么 提前感谢。Visual Foxpro?对于单记录更新,我怀疑SP是否有任何性能优势。维护它们的努力肯定胜过您可能获得的任何边际性能增益 存储过程专家可能会想到除了性能之外的其他好处。Visual Foxpro?对于单记录更新,我怀疑SP是否有任何性能优势。维护它们的努力肯定胜过您可能获得的任何边际性能增益 存储过程专家可能会想到除了性

我想知道通过简单CRUD应用程序的存储过程在数据库中执行dml命令(插入、更新、删除)的真正优势。仅仅在前端使用一些生成dml命令的通用过程,这种方法的好处是什么


提前感谢。

Visual Foxpro?对于单记录更新,我怀疑SP是否有任何性能优势。维护它们的努力肯定胜过您可能获得的任何边际性能增益


存储过程专家可能会想到除了性能之外的其他好处。

Visual Foxpro?对于单记录更新,我怀疑SP是否有任何性能优势。维护它们的努力肯定胜过您可能获得的任何边际性能增益


存储过程专家可能会想到除了性能之外的其他好处。

主要好处之一是访问控制。应用程序只有执行权限,没有直接数据访问权限。通过这种方式,管理员可以检查过程并确保它们使用正确的访问路径(即索引)。如果应用程序可以直接访问表,开发人员将编写糟糕的SQL并关闭服务器

其中一个主要好处是访问控制。应用程序只有执行权限,没有直接数据访问权限。通过这种方式,管理员可以检查过程并确保它们使用正确的访问路径(即索引)。如果应用程序可以直接访问表,开发人员将编写糟糕的SQL并关闭服务器

就性能而言,您不太可能看到任何好处。我认为更多的是关于数据库的安全性

在任何情况下,存储过程的优点是DBA能够以不同的方式控制对数据的安全访问。这通常是DBA的首选项调用。将对服务器的CRUD访问权放在服务器中意味着它们控制对服务器的100%访问权。您的代码必须满足其存储过程“API”

如果您通过远程视图、游标适配器或SQL Passthrough SQLExec()将逻辑包含在Visual FoxPro代码中,则意味着您拥有100%的代码控制权,DBA必须授予您对数据库组件的访问权,或者通过代码用于连接的应用程序角色授予您访问权。在动态构建CRUD SQL语句方面,您的代码可能更灵活一些。存储的进程必须处理灵活的参数,才能通用地构建语句


瑞克·舒默(Rick Schummer)

就性能而言,你不太可能看到任何好处。我认为更多的是关于数据库的安全性

在任何情况下,存储过程的优点是DBA能够以不同的方式控制对数据的安全访问。这通常是DBA的首选项调用。将对服务器的CRUD访问权放在服务器中意味着它们控制对服务器的100%访问权。您的代码必须满足其存储过程“API”

如果您通过远程视图、游标适配器或SQL Passthrough SQLExec()将逻辑包含在Visual FoxPro代码中,则意味着您拥有100%的代码控制权,DBA必须授予您对数据库组件的访问权,或者通过代码用于连接的应用程序角色授予您访问权。在动态构建CRUD SQL语句方面,您的代码可能更灵活一些。存储的进程必须处理灵活的参数,才能通用地构建语句

Rick Schummer

对于存储过程:

  • 消除SQL注入风险
  • 封装(安全性,将其视为方法)
  • 允许更改客户端代码(对数据库使用相同的API)
  • 处理增加的复杂性(例如在SQL端事务中插入父事务和子事务)
  • 更易于管理事务
对于存储过程:

  • 消除SQL注入风险
  • 封装(安全性,将其视为方法)
  • 允许更改客户端代码(对数据库使用相同的API)
  • 处理增加的复杂性(例如在SQL端事务中插入父事务和子事务)
  • 更易于管理事务

您能提供一个通用过程的示例吗?我正在VFP中迭代一个表单,并获取一个属性值,该属性值告诉我在insert命令的fieldlist部分中要包含哪个字段来命名一个示例。。valuelist部分的赋值也一样。您能提供一个通用过程的示例吗?我正在VFP中迭代一个表单,并获取一个属性值,该属性值告诉我在insert命令的fieldlist部分中要包含哪个字段来命名一个示例。。与valuelist零件的赋值相同。Ok。但我猜边际性能的提高与这是一个VisualFoxPro应用程序这一事实无关。。。我的意思是,这与任何其他前端应用程序都是一样的,那么为什么每个人都在谈论为每个DML命令创建SP的“规则”呢???没有规则,只有最适合您的应用程序的规则。有许多商店遵循这一“规则”,并且做得很好。这并不意味着你必须这么做。你是对的……这与FoxPro没有什么特别的关系。但我猜边际性能的提高与这是一个VisualFoxPro应用程序这一事实无关。。。我的意思是,这与任何其他前端应用程序都是一样的,那么为什么每个人都在谈论为每个DML命令创建SP的“规则”呢???没有规则,只有最适合您的应用程序的规则。有许多商店遵循这一“规则”,并且做得很好。这并不意味着你必须这么做。你是对的……这与FoxPro没有什么特别的关系。谢谢大家。我现在有了更好的视角。谢谢大家。我现在有了更好的视角。