存储过程入门(一)。

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

 

存储过程就是通过将实现某个常用或是复杂的功能的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
   

时间: 2024-10-13 08:26:08

存储过程入门(一)。的相关文章

SQL 存储过程入门(事务)(四)

SQL 存储过程入门(事务)(四) 本篇我们来讲一下事务处理技术. 为什么要使用事务呢,事务有什么用呢,举个例子. 假设我们现在有个业务,当做成功某件事情的时候要向2张表中插入数据,A表,B表,我们插入的顺序是先插入A,再插入B表,如果都顺利插入成功了,当然没有问题,如果任意一张表插入失败了,而另一张表插入成功了,插入成功的表就是垃圾数据了.我们要判断,任意一张表插入失败都回滚,就是都不插入,这就是事务的基本使用. 一,sql事务定义 所谓事务是用户定义的一个数据库操作序列,是一个不可分割的工作

MySQL数据库新特性之存储过程入门教程

在MySQL 5中,终于引入了存储过程这一新特性,这将大大增强MYSQL的数据库处理能力.在本文中将指导读者快速掌握MySQL 5的存储过程的基本知识,带领用户入门. 存储过程介绍 存储过程是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中.用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它.存储过程可由应用程序通过一个调用来执行,而且允许用户声明变量 .同时,存储过程可以接收和输出参数.返回执行存储过程的状态值,也可以嵌套调用. 存储过程的优点 作为存储过程,有以

mysql存储过程入门与提高(第三篇)

由于一些不好说的原因,以后博客内容大多只会发笔记的截图.此博客只发在my.oschina.net上,请勿作任何商业用途!! mysql存储过程:是指在数据库中定义一组sql语句组合在一起,并当作一个整体存储在mysql服务器中. 和存储函数的最主要的区别是对于存储过程来说可以返回参数,如记录集,而函数只能返回值或者表对象.函数只能返回一个变量:而存储过程可以返回多个.my.oschina.net讲存储函数的时候会把储存过程和存储函数的区别列出来.my.oschina.net 基本形式: CREA

SQLServer存储过程入门

1.创建一个返回结果集的存储过程 create procedure firstpro As begin select * from dbo.Person End 执行: execute dbo.firstpro 如下图: 2.创建一个要求输入一个输入参数的存储过程 create procedure twopro @Id varchar(10) --定义一个输入参数 as select * from dbo.Person where Id = @Id --要求Id列与输入的参数相等 执行: exe

存储过程入门

我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数(如果该存储过程带有参数)来调用执行它. 一个存储过程是一个可编程的函数,它在数据库中创建并保存.它可以有SQL语句和一些特殊的控制结构组成.当希望在不同的应用程序或平台上执行相同的函数,或者封装特定功能时,存储过程是非常有用的.数据库中的存储过程可以看做是对编程中面向对象方法的模拟.

mysql存储过程入门与提高(第二篇)

以前面试的时候被问道为啥用mysql存储过程,或者存储过程的优点.作为一个专业的mysql dba.肯定是必须要掌握的.而我只是运维啊 哈哈哈.当时回答的不好,后来整理了 大概这几条,存储过程执行速度快,存储过程能够减少网络流量,提高应用程序代码的灵活性,提高数据安全保护机制. 狂汗啊!看人家洋鬼子整理的多齐整啊.师夷长技以制夷,奋起啊!!! ? The use of stored programs can lead to a more secure database.? Stored prog

mysql存储过程入门与提高(第一篇)

以前在网上看到歪国人专门写了本mysql存储过程,感觉很强大啊.刚好最近新项目上优化要用到存储过程,我就把之前的学习笔记整理了一下.最近太忙啊!!! MySQL stored programs包括存储过程,函数,触发器. 先来看一下官方的定义. Stored procedures 存储过程Stored procedures are the most common type of stored program. A stored proce-dure is a generic program un

mysql 存储过程入门

这篇文章主要介绍了MySql存储过程与函数详解,内容很详细,需要的朋友可以参考下 存储过程和函数是在数据库中定义一些SQL语句的集合,然后直接调用这些存储过程和函数来执行已经定义好的SQL语句.存储过程和函数可以避免开发人员重复的编写相同的SQL语句.而且,存储过程和函数是在MySQL服务器中存储和执行的,可以减少客户端和服务器端的数据传输.一.存储过程1.1.基本语法 CREATE PROCEDURE sp_name ([proc_parameter[,...]])     [characte

MySQL存储过程入门教程

存储过程介绍 存储过程是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中.用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它.存储过程可由应用程序通过一个调用来执行,而且允许用户声明变量 .同时,存储过程可以接收和输出参数.返回执行存储过程的状态值,也可以嵌套调用. 存储过程和函数的区别 函数往往作为公式使用,存储过程作为完成某种功能使用. 函数分为表值函数跟标量函数.表值函数是经过一些sql语句方法最后返回一张表,标量函数是经过一些sql语句方法最后返回一个值.