SQL存储过程笔记
一、概述
存储过程(Stored Procedure)是一组为了完成特定功能的SQL 语句集,经编译后存储在数据库。用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。
优点: 1.由于存储过程是预编译的,在首次运行一个存储过程时,查询优化器对其进行分析、优化,并给出最终被存在系统表中的执行计划,不像解释执行的SQL语句那样在提出操作请求的时候才进行语法分析和优化工作,因而运行效率高,它提供了在服务端快速运行SQL语句的有效途径。
2.存储过程降低了客户机和服务器之间的通信量,客户机上的应用程序只要通过网络向服务器发出存储过程的名字和参数,就可以让RDBMS执行许多条SQL语句,并执行数据处理,只有最中结果才返回客户端。
3.存储过程允许标准组件式编程,存储过程在被创建以后可以在程序中被多次调用,而不必重新编写该存储过程的SQL语句。而且数据库专业人员可随时对存储过程进行修改,但对应用程序源代码毫无影响(因为应用程序源代码只包含存储过程的调用语句),从而极大地提高了程序的可移植性。
二、基本语法
1.变量声明
declare @variable int 或者 @variable int
多个变量的声明 declare @variable int, @va vachar(10),....
区别:declare的含义是定义一个存储过程中使用的变量,而不加declare的是存储过程需要传入的参数,下面一个具体的实例可以看得更清楚:
--创建存储过程
create procedure sl_procedure
@va int --参数声明
as
declare @variable int --变量声明
set @variable=22 --变量赋值
select * from Albums
where ArtistId=@va --执行存储过程
exec sl_procedure 12 --12 为传入的参数
2.变量赋值:
set @variable=22 --变量赋值
变量赋值时变量前必须加set
3.条件控制语句:
if(条件)
begin
--执行语句块
end
else
begin
--执行语句块
end
3.循环控制语句
while(条件)
begin
--执行语句块
end
三、实例分析
1.带输入参数的存储过程
--根据专辑名 查找艺术家 --创建存储过程
Create procedure ArtistNameOut1
@albumTitle varchar(20) --参数声明
as
select ar.ArtistName from Artists ar
join Albums al
on ar.ArtistId=al.AlbumId
where al.AlbumTitle=@albumTitle
GO
--执行存储过程
--参数传递方式1,多个参数以 , 号隔开
exec ArtistNameOut1 @albumTitle='Worlds' -- 参数传入
--参数传递方式2,
exec ArtistNameOut1 'Worlds' -- 参数传入
2.带输出参数的存储过程
--根据专辑名 输出艺术家
--创建存储过程
Create procedure ArtistNameOut
@albumTitle varchar(20), --参数声明
@artistName varchar(20) output --输出参数:output标识
as
select @artistName=ar.ArtistName from Artists ar
join Albums al
on ar.ArtistId=al.AlbumId
where al.AlbumTitle=@albumTitle
GO
--执行存储过程
declare @returnName varchar(20)
exec ArtistNameOut 'Worlds',@returnName output -- 参数传入
select @returnName
调用存储过程时需要再声明一个变量,作为output参数
关于调用存储过程传递参数过程中遇到的错误,贴个图记录一下:
多个参数,参数传递方式必须统一
SQL存储过程笔记的更多相关文章
- sql 存储过程笔记3
16:22 2014/1/26一.定义变量--简单赋值declare @a int set @a = 5 print @a --使用select语句赋值declare @user1 nvarchar( ...
- sql 存储过程笔记2
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[sys_Page_v2]') and OBJECTPROPE ...
- sql 存储过程笔记
create procedure SP_Wim_GetWorkSubSectionById(@paramId as int)asbegindeclare @id as int;declare @lvI ...
- 《软件测试自动化之道》读书笔记 之 SQL 存储过程测试
<软件测试自动化之道>读书笔记 之 SQL 存储过程测试 2014-09-28 待测程序测试程序 创建测试用例以及测试结果存储 执行T-SQL脚本 使用BCP工具导入测试用例数据 ...
- ORACLE存储过程笔记3
ORACLE存储过程笔记3 流程控制 1.条件 if expression thenpl/sql or sqlend if; if expression thenpl/sql or sqlel ...
- ORACLE存储过程笔记1
ORACLE存储过程笔记1 一.基本语法(以及与informix的比较) create [or replace] procedure procedure_name (varible {IN|OUT ...
- PL/SQL存储过程编程
PL/SQL存储过程编程 /**author huangchaobiao *Email:huangchaobiao111@163.com */ PL/SQL存储过程编程(上) 1. Oracle应用编 ...
- SQL存储过程分页(通用的拼接SQL语句思路实现)
多表通用的SQL存储过程分页 案例一: USE [Community] GO /****** Object: StoredProcedure [dbo].[Common_PageList] Scrip ...
- SQL存储过程的调用及写法
调用函数: public class SqlProcess { ; public DataSet ReturnSet = null; public SqlDataAdapter adapter = n ...
随机推荐
- 学习开发jquery插件
先学习http://www.cnblogs.com/playerlife/archive/2012/05/11/2495269.html http://www.cnblogs.com/fromeart ...
- git clone 远程分支
先初始化一个git 仓库 命令:git init git clone 相应的地址 这样就会形成一个.git 隐藏文件夹 一定要注意的,要进入到子文件夹去git checkout feature/0. ...
- 一些不太常用的Linux命令
ACCTCOM 查看所有用户执行过的进程 acctcom | tail - 查看指定用户执行过的进程/命令 acctcom -u <username> | tail - 使用一个正则表达式 ...
- 关于Cococs中的CCActionEase
尊重作者劳动,转载时请标明文章出处.作者:Bugs Bunny地址:http://www.cnblogs.com/cocos2d-x/archive/2012/03/13/2393898.html 本 ...
- c语言实现BMP图像转换为灰度图
当初是自己要装X,非要用c来写信息隐藏作业,装了X,就得付出实践.查了好久资料,到期末才把作业交了,这里总结一下. 这道题是将真彩图转换为灰度图. 关于BMP文件结构,这是困扰了我好久的问题,上网查了 ...
- (转)關於flashback query的ORA-01466錯誤
摘自:http://blog.sina.com.cn/s/blog_70a2bdb80100pqid.html 使用Oracle 10g 新特性flashback query來查詢過去修改並已提交的記 ...
- QT使用BC技术(网页与桌面结合)开发程序,好多相关链接(寒山居士)
http://blog.csdn.net/Esonpo/article/category/1366376
- HDOJ(HDU) 1570 A C
Problem Description Are you excited when you see the title "AC" ? If the answer is YES , A ...
- HDOJ 1163 Eddy's digital Roots(九余数定理的应用)
Problem Description The digital root of a positive integer is found by summing the digits of the int ...
- HDU_2017——统计数字字符出现的个数
Problem Description 对于给定的一个字符串,统计其中数字字符出现的次数. Input 输入数据有多行,第一行是一个整数n,表示测试实例的个数,后面跟着n行,每行包括一个由字母和数 ...