定义:
为了完成特定功能,预先用SQL语句写好并经编译后存储在数据库中。
看到定义,刚开始学习的人一定有很多的疑问,到底存储过程和一般的SQL语句有什么区别呢?
存储过程的优点:
1.存储过程只在创造时进行编译,以后每次执行存储过程都不需再重新编译,而一般SQL语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度。
2.当对数据库进行复杂操作时(如对多个表进行Update,Insert,Query,Delete时),可将此复杂操作用存储过程封装起来与数据库提供的事务处理结合一起使用。
3.存储过程一旦被创建,在程序中调用任意多次,重复使用,可减少数据库开发人员的工作量,最大的优点是允许模块化的程序设计。
4.安全性高。即时是没有访问存储过程引用表或视图的用户也可以访问执行存储过程。
5.存储过程可以减少网络流量。用户可以发送一个单独的语句实现一个复杂的操作,不需要发送多条SQL语句,较少了客户端和服务器请求的数量。
一.创建存储过程
create procedure sp_name
@[参数名] [类型],@[参数名] [类型]
as
begin
.........
end
以上格式还可以简写成:
create proc sp_name
@[参数名] [类型],@[参数名] [类型]
as
begin
.........
end
/*注:“sp_name”为需要创建的存储过程的名字,该名字不可以以阿拉伯数字开头*/
二、执行存储过程
执行存储过程有三种方式,下面为大家一一介绍:
1.通过自身执行
基本语法:execprocedure_name[参数名]
2.在INSERT语句中执行
基本语法:
CREATEPROCEDURE procedure_name
@[Param1][类型],@[Param2] [类型]
AS
BEGIN
insert into 表名(Param1,Param2,Param3) values(@Param1,@Param2,@Param3)
END
3.通过右键菜单执行
1.右击要执行的存储过程,如下图:
2.选择【执行存储过程】命令,打开【执行过程】窗口
三.管理存储过程
1.修改存储过程
基本语法:
Alter procedure procedure_name[参数名]
2.删除存储过程
1.基本语法:
drop procedureprocedure_name[参数名]
2.注意事项
不能在一个存储过程中删除另一个存储过程,只能调用另一个存储过程
四.错误信息处理
为了提高存储过程的效率,存储过程应该包含与用户进行交互的事物状态(成功或失败)的错误信息。在此,我主要为大家介绍@@error这种方式:
在做机房收费系统中添加学生信息,需要处理多个表,因此用到了存储过程,下面主要是通过创建此存储过程为大家介绍@@eeor:
USE [Roomcharge-sys]
GO
/****** Object: StoredProcedure [dbo].[PROC_StudentRegister] Script Date: 06/21/2013 16:42:32 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:于亮 <Author,,Name>
-- Create date: 13,06,20<Create Date,,>
-- Description: 注册用于存储学生信息<Description,,>
-- =============================================
CREATE PROCEDURE[dbo].[PROC_StudentRegister]
-- Add the parameters for the stored procedure here
--参数
@studentID int,@studentName varchar(10),@StudentSex varchar(10),@Department varchar(10),
@grade varchar(10),@Class varchar(10),@UserID int,@CardID int,@Cash varchar(10),@Type varchar(10),@IsCheck varchar(10),
@RegDate varchar(10),@RegTime varchar(10)
AS
BEGIN
--事物
SET NOCOUNT ON;
SET XACT_ABORT ON;
BEGIN TRANSACTION --开始事物
--添加表
insert into T_STUDENTINFO (StudentID,StudentName,StudentSex ,Department ,Grade ,Class,CardID ,UserID ) values (@StudentID,@StudentName,@StudentSex ,@Department ,@Grade ,@Class,@CardID,@UserID)
insert into T_CARDINFO (CardID ,Cash ,Type ,regDate,RegTime,isCheck) values (@CardID ,@Cash ,@Type ,@regDate,@RegTime,@IsCheck)
IF @@error<>0 --判断数据有没有错误
BEGIN --有错误
ROLLBACK TRAN --回滚事物
commit tran --提交事物
end
else --没有错误
commit tran --提交事物
END
GO
扫盲:
1.SET NOCOUNT
当 SET NOCOUNT 为 ON时,不返回计数(表示受 Transact-SQL 语句影响的行数)。当 SET NOCOUNT 为 OFF 时,返回计数。
如果存储过程中包含的一些语句并不返回许多实际的数据,则该设置由于大量减少了网络流量,因此可显著提高性能。
2.SET XACT_ABORT
指定当 Transact-SQL语句出现运行时错误时,SQL Server 是否自动回滚到当前事务。
当 SET XACT_ABORT 为ON 时,如果执行 Transact-SQL 语句产生运行错误,则整个事务将终止并回滚。
当 SET XACT_ABORT 为OFF 时,有时只回滚产生错误的 Transact-SQL 语句,而事务将继续进行处理。如果错误很严重,那么即使 SET XACT_ABORT 为OFF,也可能回滚整个事务。OFF 是默认设置。
相关推荐
通过使用存储过程,开发者可以创建复杂的业务逻辑,比如事务处理、数据验证和错误处理。 在Sybase中,创建存储过程使用`CREATE PROCEDURE`语句,调用则通过`EXEC`命令。例如,以下是一个简单的存储过程示例,它接受...
### Oracle数据库PL/SQL存储过程详解 #### 一、存储过程概述 **Oracle存储过程**是一种可以在Oracle数据库中存储并可被多次调用的PL/SQL代码块。它由一系列的PL/SQL语句组成,可以包含控制流程、变量声明等,能够...
本文实例讲述了mysql存储过程之错误处理。分享给大家供大家参考,具体如下: 当存储过程中发生错误时,重要的是适当处理它,例如:继续或退出当前代码块的执行,并发出有意义的错误消息。其中mysql提供了一种简单的...
### Oracle数据库存储过程详解 在Oracle数据库中,存储过程是一种重要的数据库对象,它允许开发者将一组SQL语句和控制流程语句封装在一起,形成可重复使用的代码块。存储过程不仅提高了代码的重用性,还增强了数据...
使用场景及目标:帮助数据库初学者掌握基本存储过程的设计与实现技巧,以及学会在应用程序中有效地使用它们来执行复杂的业务操作,如批量数据读写、事务处理等任务。 其他说明:除了基本的语法介绍之外,文中还强调...
Oracle存储过程是提高数据库应用性能的重要工具之一,通过合理的设计和使用,不仅可以提升应用的响应速度,还能有效保护数据库的安全性和稳定性。了解其基本语法和常见问题,对于开发者来说至关重要。
5. **错误处理**:存储过程可以包含错误处理机制,使得错误处理更加集中和统一。 ### MySQL5.0中的新特性 MySQL5.0在存储过程方面引入了多项新特性: - **新的SQL语句**:包括DECLARE、BEGIN/END、IF/THEN/ELSE、...
SGA 包括数据缓冲区、重做日志缓冲区、共享SQL区域等,这些内存区域用于存储和处理数据库数据。实例是临时性的,当Oracle服务停止时,实例及其内存结构也会消失。 2. **数据库**:数据库是物理存储在磁盘上的文件...
### 删除数据库表中数据的存储过程 #### 概述 在数据库管理中,经常会遇到需要批量删除表中数据的情况。为了提高效率并确保安全性,通常会编写存储过程来执行这类操作。存储过程不仅可以减少网络流量,还能通过...
SPL提供了丰富的控制结构和函数库,支持变量定义与赋值、流程控制(如IF条件判断、FOR循环、WHILE循环)、函数调用、错误处理等功能。具体而言: - **变量定义和赋值**:利用`DEFINE`和`LET`关键字来声明变量并赋值...
在实际应用中,存储过程常常与触发器、函数、包等其他数据库对象结合使用,以构建复杂的业务逻辑。例如,一个存储过程可能需要调用其他存储过程或函数,或者通过触发器自动执行某些操作。 在数据库优化方面,存储...
在学生成绩管理系统中,可能还需要处理数据验证、错误处理和事务管理。例如,当尝试添加新记录时,确保所有字段都有有效输入,避免SQL注入攻击。如果发生错误,使用`try-catch`结构捕获并处理异常。 此外,还可以...
Oracle存储过程是一种数据库编程技术,它是PL/SQL(Oracle的编程语言)的集合,以命名的方式存储在数据库中。存储过程和函数有诸多优势,包括: 1. **集中管理**:存储过程和函数作为数据库对象存储,使得代码不...
10. 数据仓库与数据挖掘:数据仓库是为企业决策支持设计的集成数据库,而数据挖掘是从大量数据中发现模式和知识的过程。OLAP(在线分析处理)和ETL(提取、转换、加载)在数据仓库中起着关键作用。 通过学习和解答...
MySQL提供了强大的错误处理机制,可以通过定义错误处理器来捕获和处理存储过程中发生的异常情况。 #### 游标(Cursors) 游标允许存储过程逐行处理查询结果集。这对于需要逐行处理大量数据的应用场景非常有用。 ###...
8. **错误处理和调试**:在编程过程中,学会识别和处理数据库操作中的错误,使用调试工具定位问题,是提高程序稳定性和可靠性的关键。 9. **数据绑定和控件**:MFC提供了数据绑定机制,可以使UI控件与数据库记录...
5. **数据库错误处理**:如何捕获和处理数据库操作中的异常,确保程序的稳定性和可靠性。 6. **用户界面集成**:结合CRecordView类,将数据库操作与用户界面元素(如控件和对话框)紧密结合,实现用户友好的数据库...