在线QQ客服:1922638
专业的SQL Server、MySQL数据库同步软件
存储过程是一组用于完成特定功能的SQL语句,该语句已编译并存储在数据库中。用户通过指定存储过程的名称并提供参数(如果存储过程具有参数)来执行它。存储过程是数据库中的重要对象。任何设计良好的数据库应用程序都应使用存储过程。存储过程是由流控制和SQL语句编写的过程。该过程在编译和优化后存储在数据库服务器中,并且可以在使用应用程序时调用。在ORACLE中,几个相关的流程可以组合在一起形成一个包。
简单来说:存储过程可以说是一个记录集,它是由某些T-SQL语句组成的代码块。这些T-SQL语句代码实现了某些功能,例如方法(用于单个或多个表),添加,删除,更改和检查),然后为该代码块命名并在使用此函数时调用它。
好处:
1.存储过程可以使程序的执行更高效,更安全,因为在建立过程之后,该过程已经被编译并存储在数据库中,因此直接写SQL需要进行分析然后执行,因此过程更加高效,直接编写SQL语句会带来安全性问题,例如:sql注入
2.建立过程不会消耗太多系统资源,因为该过程仅在调用时执行。
3.存储过程可用于减少网络流量。存储过程的代码直接存储在数据库中,因此T-sql语句不会有很多代码流量。
4.使用存储过程使您可以增强执行计划的重用性,这可以通过使用远程过程调用(RPC)在服务器上处理存储过程来提高性能。 RPC封装参数和调用服务器端过程的方式使引擎可以轻松地找到匹配的执行计划,并且只需要插入更新的参数值即可。
5.高可维护性。与更改,测试和重新部署程序集相比,更新存储过程通常需要较少的时间和精力。
6.代码经过精简和一致,并且可以在应用程序代码的不同位置使用存储过程。
7.更好的版本控制。通过使用Microsoft Visual SourceSafe或某些其他源代码控制工具,您可以轻松地还原或引用存储过程的旧版本。
8.增强的安全性:
一个。通过授予用户对存储过程(而非基于表)的访问权限,他们可以提供对特定数据的访问权限;
b。提高代码安全性并防止SQL注入(但尚未完全解决,例如,将数据操作语言-DML附加到输入参数中);
? c,SqlParameter类指定存储过程参数的数据类型,作为深度防御策略的一部分,您可以验证用户提供的值类型(但并非万无一失,否则应传递给数据库以进行其他验证) )。
缺点:
1.如果更改的范围足够大,可以更改输入存储过程的参数或该存储过程返回的数据,则仍需要更新程序集中的代码以添加参数,更新GetValue()调用,等等,这一次估计比较麻烦。
2.可移植性差?
因为存储过程将应用程序绑定到SQL Server,所以使用存储过程封装业务逻辑将限制应用程序的可移植性。如果应用程序的可移植性在您的环境中非常重要,那么将业务逻辑封装在非RDBMS的中间层中可能是一个更好的选择。
3.大量的使用过程将对服务器造成很大的压力。
-创建存储过程
-如果不是
1,只有一个
如果…。那么
万一;
2.两个选项
如果…..那么
其他
…
如果结束;
3.多项选择
如果…。那么
elsif….然后
否则。
请注意,在多项判断中elsif并非elseif
-变量赋值
V_TEST:= 123;
-带有参数的光标
-循环
1.第一个周期
2.第二个周期
?