存储过程入门(一)。

一、存储过程的定义和概括:

 

     存储过程就是通过将实现某个常用或是复杂的功能的SQL语句事先编写好并声明一个名字保存在数据库的一串SQL代码。

那么有人就会有疑问了,既然存储过程就是一串SQL语句,那我们还为什么要单独的弄这样一个技术能。接下来我们就来看看存储过程的有点。

   存储过程的优点:

             1)、可重复使用。类似于方法,从而减少数据库开发人员的代码量。

             2)、提高性能:存储过程再创建的时候就经过了编译,再次使用的时候不需要再次编译。而一般的SQL语句再次使用的时候不但要再次缀写编码而且也要进行再次编译。

             3)、减少网络流量。存储过程存储在服务器上,调用的时候只需要给出存储过程的名称和参数即可,因此减少了网络传输数据量。

             4)、安全性。参数化的存储过程可以防止注入攻击。

二、存储过程的创建:

创建语法:
  CREATE PROC [EDURE] procedure_name[;number]
  [{@parameter data_type}
  [VARYING][=default][OUTPUT]]
  [,...n]
  [WITH
             {RECOMPILE|ENCRYPTION|RECOMPILE , ENCRYPTION } ] 
  
  [ FOR REPLICATION ] 
  
  AS sql_statement [ ...n ]

--参数含义
  procedure_name: 存储过程名称,后跟的number必须为数字,是为了区分一组同名的存储过程。一个数据库中存储过程的名字比喻唯一。
  @parameter:是存储过程的参数。在Create Procedure 语句中,可以声明一个或多个参数。当调用该存储过程时,用户必须给出所有的参数值,除非定义了参数的缺省值。若参数的形式以 @parameter=value 出现,则参数的次序可以不同,否则用户给出的参数值必须与参数列表中参数的顺序保持一致。若某一参数以@parameter=value 形式给出,那么其它参数也必须以该形式给出。一个存储过程至多有1024 个参数。@开头表示局部变量,@@开头表示全局变量。
 data_type:数据类型。在存储过程中,所有的数据类型包括text 和image 都可被用作参数。但是,游标cursor 数据类型只能被用作OUTPUT 参数。当定义游标数据类型时,也必须对VARING 和OUTPUT 关键字进行定义。对可能是游标型数据类型的OUTPUT 参数而言,参数的最大数目没有限制。
  VARYING:指定OUTPUT参数支持的结果集,仅用于游标的定义。
 default:是指参数的缺省值。如果定义了缺省值,那么即使不给出参数值,则该存储过程仍能被调用。缺省值必须是常数,或者是空值。
 OUTPUT:表明该参数是一个返回参数。用OUTPUT 参数可以向调用者返回信息。Text 类型参数不能用作OUTPUT 参数。
 RECOMPILE:指明SQL Server 并不保存该存储过程的执行计划,该存储过程每执行一次都又要重新编译。
ENCRYPTOIN:表明SQL Server 加密了syscomments 表,该表的text 字段是包含有Create procedure语句的存储过程文本,使用该关键字无法通过查看syscomments 表来查看存储过程内容。
FOR REPLICATION:选项指明了为复制创建的存储过程不能在订购服务器上执行,只有在创建过滤存储过程时(仅当进行数据复制时过滤存储过程才被执行),才使用该选项。FOR REPLICATION与WITH RECOMPILE 选项是互不兼容的。
AS:表面该存储过程要执行的动作。
sql_statement:是任何数量和类型的包含在存储过程中的SQL 语句。
    

 小例子:

下面来个小例子:
 CREATE PROC userquery
    @username varchar(20)
    @password varchar(20)
 AS
   BEGIN
      select * from  userinfo where username=@username and password=@password
   END
GO
-----------------------------------------------------
运行
  exec userquery @username="admin" @password="123456"
------------------------------------------------------
结果:
username   password
admin         123456
   
View Code
原文地址:https://www.cnblogs.com/tanzhen/p/4176615.html