【机房】存储过程初学

标签: 数据库 存储
28人阅读 评论(3) 收藏 举报
分类:

前言

        在组合窗体的实现中用到了存储过程,在这里学习一下什么是存储过程。

存储过程

        存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,存储在数据库中,经过第一次编译后再次调用不需要再次编译,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要对象。——某度

为什么用

        我们使用SQL语句来实现我们的增删改查,大部分时候都是 很容易实现,但是当需要查询好多表、或者有几种操作一起的时候只是使用SQL语句一句一句实现就会有很多重复,这时候存储过程就很有优势了,他是完成你想实现的功能的SQL语句集。

存储过程与SQL语句对比

    优势

        1、提高性能
        SQL语句在创建过程时进行分析和编译。存储过程是预编译的,在首次运行一个存储过程时,查询优化器对其进行分析、优化,并给出最终被存在系统表中的存储计划,在执行的过程中节省开销。
        2、降低网络开销
       
存储过程只需要在提供必要的参数和名称即可。
        3、便于进行代码移植
       
应用程序源代码处只需要参数和名称,所以在数据库中可以修改其存储过程,也是一种解耦的形式,大大提高了程序的可移植性。
        4、更强的安全性
       
(1)可以对存储过程进行权限设置,避免非授权用户的访问。
       
(2)在通过网络调用的过程中,只有对执行过程的调用是可见的。恶意用户无法看到数据表和数据库对象名称,避免了嵌入自己的Transact-SQL语句或搜索关键数据。
        (3)使用过程中使用参数,防止SQL注入攻击。
        (4)可对进程进行加密,有助于对源代码的模糊处理。

创建存储

        1、创建语法

create proc | procedure pro_name
    [{@参数数据类型} [=默认值] [output],
     {@参数数据类型} [=默认值] [output],
     ....
    ]
as
    SQL_statements

        2、创建不带参数存储过程

--创建存储过程
if (exists (select * from sys.objects where name = 'proc_get_student'))
    drop proc proc_get_student
go
create proc proc_get_student
as
    select * from student;

--调用、执行存储过程
exec proc_get_student

        3、修改存储过程

--修改存储过程
alter proc proc_get_student
as
select * from student;

        4、带参存储过程

--带参存储过程
if (object_id('proc_find_stu', 'P') is not null)
    drop proc proc_find_stu
go
create proc proc_find_stu(@startId int, @endId int)
as
    select * from student where id between @startId and @endId
go

exec proc_find_stu 2, 4;

        5、带输出参数存储过程

if (object_id('proc_getStudentRecord', 'P') is not null)
    drop proc proc_getStudentRecord
go
create proc proc_getStudentRecord(
    @id int, --默认输入参数
    @name varchar(20) out, --输出参数
    @age varchar(20) output--输入输出参数
)
as
    select @name = name, @age = age  from student where id = @id and sex = @age;
go

-- 
declare @id int,
        @name varchar(20),
        @temp varchar(20);
set @id = 7; 
set @temp = 1;
exec proc_getStudentRecord @id, @name out, @temp output;
select @name, @temp;
print @name + '#' + @temp;

        6、加密存储过程

--加密WITH ENCRYPTION 
if (object_id('proc_temp_encryption', 'P') is not null)
    drop proc proc_temp_encryption
go
create proc proc_temp_encryption
with encryption
as
    select * from student;
go

exec proc_temp_encryption;
exec sp_helptext 'proc_temp';
exec sp_helptext 'proc_temp_encryption';
查看评论

学习存储过程

创建过程: create or replace procedure update_emp is begin update emp set ename = 'hhdhjf' where empno ...
  • yuan_lo
  • yuan_lo
  • 2013-10-27 09:57:53
  • 646

机房重构——存储过程详解

存储过程是sql语句和控制流语句预编译集合,它以一个名称存储并作为一个单元处理,应用程序可以通过调用的方法执行存储过程。它使得对数据库的管理和操作更加的容易和,效率更高。 存储过程的优点: 1.通过本...
  • changyinling520
  • changyinling520
  • 2016-02-29 09:06:12
  • 1059

plsql快速入门教程_包含存储过程(最适合初学者)

  • 2015年11月16日 19:39
  • 605KB
  • 下载

存储过程学习总结

SQLSERVER存储过程使用说明书   引言 首先介绍一下什么是存储过程:存储过程就是将常用的或很复杂的工作,预先用SQL语句写好并用一个指定的名称存储起来,并且这样的语句是放在数据库中的,还...
  • zhoujn90
  • zhoujn90
  • 2013-08-27 20:37:33
  • 3582

oracle存储过程初学实例

认识存储过程和函数  存储过程和函数也是一种PL/SQL块,是存入数据库的PL/SQL块。但存储过程和函数不同于已经介绍过的PL/SQL程序,我们通常把PL/SQL程序称为无名块,而存储过程和函数是以...
  • qq_37057095
  • qq_37057095
  • 2017-08-04 11:05:00
  • 899

存储过程新人学习

存储过程(Stored Procedure)是一组为了完成特定功能的T-SQL语句集合,经编译后存储在SQL Server服务器中,利用存储过程可以加速SQL语句的执行。 在应用程序中,使用存储过程读...
  • mss359681091
  • mss359681091
  • 2016-04-06 11:17:25
  • 2506

存储过程精妙语句初学精通

  • 2011年12月05日 11:30
  • 5KB
  • 下载

初学存储过程

一:创建存储过程:【一般格式:Create proc 存储过程的名字[参数列表(多个以“,”分隔)]AsSQL语句】例如://开始create proc upGetUserName @intUserI...
  • jxgirl
  • jxgirl
  • 2008-05-18 18:45:00
  • 233

C# 存储过程-机房充值

前言  开始想着机房怎么也得来个存储过程吧,后来就打听了打听,组合查询的比较多,可我是谁啊,工地一枝花啊,说啥也得自己来个不一样的,当时写完,表面没啥错,也执行成功了,找谁都跟谁说我是个天才,可到了运...
  • dfhgshgdf
  • dfhgshgdf
  • 2017-08-05 17:59:15
  • 208

通用机房计费存储过程

  • 2009年08月05日 11:51
  • 9KB
  • 下载
    个人资料
    专栏达人 持之以恒
    等级:
    访问量: 3万+
    积分: 5155
    排名: 6713
    博客专栏
    最新评论