存储过程语法

图标

豆瓜

豆瓜网

豆瓜官网专栏

豆瓜 图标 2022-01-16 12:05:36

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_studentasselect * from student;

 

4、 带参存储过程

复制代码

 1 --带参存储过程 2 if (object_id('proc_find_stu', 'P') is not null) 3     drop proc proc_find_stu 4 go 5 create proc proc_find_stu(@startId int, @endId int) 6 as 7     select * from student where id between @startId and @endId 8 go 9 10 exec proc_find_stu 2, 4;

复制代码

 

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

复制代码

 1 --带通配符参数存储过程 2 if (object_id('proc_findStudentByName', 'P') is not null) 3     drop proc proc_findStudentByName 4 go 5 create proc proc_findStudentByName(@name varchar(20) = '%j%', @nextName varchar(20) = '%') 6 as 7     select * from student where name like @name and name like @nextName; 8 go 9 10 exec proc_findStudentByName;11 exec proc_findStudentByName '%o%', 't%';

复制代码

 

6、 带输出参数存储过程

复制代码

 1 if (object_id('proc_getStudentRecord', 'P') is not null) 2     drop proc proc_getStudentRecord 3 go 4 create proc proc_getStudentRecord( 5     @id int, --默认输入参数 6     @name varchar(20) out, --输出参数 7     @age varchar(20) output--输入输出参数 8 ) 9 as10     select @name = name, @age = age  from student where id = @id and sex = @age;11 go12 13 -- 14 declare @id int,15         @name varchar(20),16         @temp varchar(20);17 set @id = 7; 
18 set @temp = 1;19 exec proc_getStudentRecord @id, @name out, @temp output;20 select @name, @temp;21 print @name + '#' + @temp;

复制代码

 

7、 不缓存存储过程

复制代码

 1 --WITH RECOMPILE 不缓存 2 if (object_id('proc_temp', 'P') is not null) 3     drop proc proc_temp 4 go 5 create proc proc_temp 6 with recompile 7 as 8     select * from student; 9 go10 11 exec proc_temp;

复制代码

 

8、 加密存储过程

复制代码

 1 --加密WITH ENCRYPTION  2 if (object_id('proc_temp_encryption', 'P') is not null) 3     drop proc proc_temp_encryption 4 go 5 create proc proc_temp_encryption 6 with encryption 7 as 8     select * from student; 9 go10 11 exec proc_temp_encryption;12 exec sp_helptext 'proc_temp';13 exec sp_helptext 'proc_temp_encryption';

复制代码

 

9、 带游标参数存储过程

复制代码

 1 if (object_id('proc_cursor', 'P') is not null) 2     drop proc proc_cursor 3 go 4 create proc proc_cursor 5     @cur cursor varying output 6 as 7     set @cur = cursor forward_only static for 8     select id, name, age from student; 9     open @cur;10 go11 --调用12 declare @exec_cur cursor;13 declare @id int,14         @name varchar(20),15         @age int;16 exec proc_cursor @cur = @exec_cur output;--调用存储过程17 fetch next from @exec_cur into @id, @name, @age;18 while (@@fetch_status = 0)19 begin20     fetch next from @exec_cur into @id, @name, @age;21     print 'id: ' + convert(varchar, @id) + ', name: ' + @name + ', age: ' + convert(char, @age);22 end23 close @exec_cur;24 deallocate @exec_cur;--删除游标

复制代码

 

10.分页存储过程

复制代码

 1 create proc [dbo].[p_paging] 2 @tableName varchar(8000),          --表名、视图名 3 @indexCol varchar(50) = 'id',      --标识列名(如:比如主键、标识,推荐使用索引列) 4 @pageSize int = 10,                --页面大小 5 @pageIndex int = 0,                --当前页 6 @orderCol varchar(100) = 'id desc',--排序 (如:id) 7 @where varchar(max) = '',         --条件 8 @columns varchar(500) = '*'        --要显示的列 9 as10 declare @sql varchar(max)11 declare @sql2 varchar(max)12 declare @where2 varchar(max)13 14 if @where <> '' 15 begin 16     select @where2 = ' And ' + @where17     select @where = ' Where ' + @where18 end19 else20     select @where2 = ''21 22 23 select @sql = 'Select Top ' + Convert(varchar(10),@pageSize) + ' ' + @columns + ' From ' + @tableName24 select @sql2 = @sql + @where25 select @sql =  @sql + ' Where ' + '(' + @indexCol + ' Not In (Select Top ' + Convert(varchar(10), @pageSize * @pageIndex) + ' ' + @indexCol + ' From ' + @tableName + @where +  ' Order by '+ @orderCol +'))'26 select @sql = @sql + @where2 27 select @sql = @sql + ' Order by ' + @orderCol28 --获取数据集29 exec (@sql)30 select @sql2 = Replace(@sql2,'Top ' + Convert(varchar(10), @pageSize) + ' ' + @columns, 'count(1)')31 --获取总数据条数32 exec(@sql2)


本文由豆瓜网专栏作家 豆瓜 投稿发布,并经过豆瓜网编辑审核。

转载此文章须经作者同意,并附上出处(豆瓜网)及本页链接。

若稿件文字、图片、视频等内容侵犯了您的权益,请联系本站进行 投诉处理

相关搜索

存储过程语法
图标 图标

豆瓜

豆瓜网

豆瓜官网专栏

  • div css教程方法分析

    图标
    豆瓜 图标 · 2022-01-26 · 4.17万浏览
  • 浅谈sql2005安装图解安装说明

    图标
    豆瓜 图标 · 2022-01-26 · 3.68万浏览
  • 代理服务器使用方法说明

    图标
    豆瓜 图标 · 2022-01-26 · 1.36万浏览
  • 全部评论

    豆瓜

    豆瓜网

    豆瓜官网专栏

  • div css教程方法分析
  • 浅谈sql2005安装图解安装说明
  • 代理服务器使用方法说明
  • 浅谈j2ee架构师规划
  • fileupload控件说明
  • 我来说两句