博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
存储过程学习 10种语法
阅读量:6633 次
发布时间:2019-06-25

本文共 3542 字,大约阅读时间需要 11 分钟。

hot3.png

  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_studentgocreate proc proc_get_studentas    select * from student; --调用、执行存储过程exec proc_get_student;

3、 修改存储过程

--修改存储过程alter proc proc_get_studentasselect * from student;

4、 带参存储过程 

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

5、 带通配符参数存储过程 

--带通配符参数存储过程if (object_id('proc_findStudentByName', 'P') is not null)    drop proc proc_findStudentByNamegocreate proc proc_findStudentByName(@name varchar(20) = '%j%', @nextName varchar(20) = '%')as    select * from student where name like @name and name like @nextName;go exec proc_findStudentByName;exec proc_findStudentByName '%o%', 't%';

6、 带输出参数存储过程 

if (object_id('proc_getStudentRecord', 'P') is not null)    drop proc proc_getStudentRecordgocreate 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;

7、 不缓存存储过程 

--WITH RECOMPILE 不缓存if (object_id('proc_temp', 'P') is not null)    drop proc proc_tempgocreate proc proc_tempwith recompileas    select * from student;go exec proc_temp;

8、 加密存储过程 

--加密WITH ENCRYPTION if (object_id('proc_temp_encryption', 'P') is not null)    drop proc proc_temp_encryptiongocreate proc proc_temp_encryptionwith encryptionas    select * from student;go exec proc_temp_encryption;exec sp_helptext 'proc_temp';exec sp_helptext 'proc_temp_encryption';

9、 带游标参数存储过程 

if (object_id('proc_cursor', 'P') is not null)    drop proc proc_cursorgocreate proc proc_cursor    @cur cursor varying outputas    set @cur = cursor forward_only static for    select id, name, age from student;    open @cur;go--调用declare @exec_cur cursor;declare @id int,        @name varchar(20),        @age int;exec proc_cursor @cur = @exec_cur output;--调用存储过程fetch next from @exec_cur into @id, @name, @age;while (@@fetch_status = 0)begin    fetch next from @exec_cur into @id, @name, @age;    print 'id: ' + convert(varchar, @id) + ', name: ' + @name + ', age: ' + convert(char, @age);endclose @exec_cur;deallocate @exec_cur;--删除游标

10、 分页存储过程 

---存储过程、row_number完成分页if (object_id('pro_page', 'P') is not null)    drop proc proc_cursorgocreate proc pro_page    @startIndex int,    @endIndex intas    select count(*) from product;        select * from (        select row_number() over(order by pid) as rowId, * from product     ) temp    where temp.rowId between @startIndex and @endIndexgo--drop proc pro_pageexec pro_page 1, 4----分页存储过程if (object_id('pro_page', 'P') is not null)    drop proc pro_stugocreate procedure pro_stu(    @pageIndex int,    @pageSize int)as    declare @startRow int, @endRow int    set @startRow = (@pageIndex - 1) * @pageSize +1    set @endRow = @startRow + @pageSize -1    select * from (        select *, row_number() over (order by id asc) as number from student     ) t    where t.number between @startRow and @endRow; exec pro_stu 2, 2;

 

转载于:https://my.oschina.net/iyinghui/blog/1486462

你可能感兴趣的文章
ZOJ - 2112 Dynamic Rankings(BIT套主席树)
查看>>
c# 6.0 学习笔记
查看>>
svn冲突解决
查看>>
Mutations
查看>>
springmvc(3)注解
查看>>
TCP通信详解
查看>>
JavaWeb面试题 有用
查看>>
案例34:火灾自动报警设施检测与验收案例分析(一)
查看>>
mongoDB 文档概念
查看>>
css中margin和padding的区别
查看>>
[js插件]JqueryUI日期插件
查看>>
转:LINUX/UNIX下的回车换行与WINDOWS下的区别
查看>>
厂家未结算差价 iPad退款双重标准惹不满
查看>>
[转载] 晓说——第27期:艺术北纬三十度 回忆印度(下)
查看>>
[转载] 中华典故故事(孙刚)——15 敲竹杠
查看>>
[转载] 王菲-天上人间
查看>>
在局域网中查找特定设备的 IP
查看>>
CF786B Legacy
查看>>
C 语言宏定义中使用do...while(0)
查看>>
Uva 1218 完美的服务
查看>>