分享Sql Server 存储过程使用方法

目录
  • 一、简介
  • 二、使用
  • 三、在存储过程中实现分页

一、简介

简单记录一下存储过程的使用。存储过程是预编译SQL语句集合,也可以包含一些逻辑语句,而且当第一次调用存储过程时,被调用的存储过程会放在缓存中,当再次执行时,则不需要编译可以立马执行,使得其执行速度会非常快。

二、使用

创建格式    create procedure 过程名( 变量名     变量类型 ) as    begin   ........    end 

create procedure getGroup(@salary int)
as
begin
   SELECT d_id AS '部门编号', AVG(e_salary) AS '部门平均工资' FROM employee
  GROUP BY d_id 
  HAVING AVG(e_salary) > @salary
end     

调用时格式,exec 过程名  参数

exec getGroup 7000

三、在存储过程中实现分页

3.1 要实现分页,首先要知道实现的原理,其实就是查询一个表中的前几条数据

select top 10 * from table  --查询表前10条数据 
select top 10 * from table where id not in (select top (10) id  from tb) --查询前10条数据  (条件是id 不属于table 前10的数据中)

3.2 当查询第三页时,肯定不需要前20 条数据,则可以

select top 10 * from table where id not in (select top ((3-1) * 10) id  from tb) --查询前10条数据  (条件是id 不属于table 前10的数据中)

3.3 将可变数字参数化,写成存储过程如下

create proc sp_pager
(
    @size int , --每页大小
    @index int --当前页码
)
as
begin
    declare @sql nvarchar(1000)
    if(@index = 1) 
        set @sql = 'select top ' + cast(@size as nvarchar(20)) + ' * from tb'
    else 
        set @sql = 'select top ' + cast(@size as nvarchar(20)) + ' * from tb where id not in( select top '+cast((@index-1)*@size as nvarchar(50))+' id  from tb )'
    execute(@sql)
end

3.4 当前的这种写法,要求id必须连续递增,所以有一定的弊端

所以可以使用 row_number(),使用select语句进行查询时,会为每一行进行编号,编号从1开始,使用时必须要使用order by 根据某个字段预排序,还可以使用partition by 将 from 子句生成的结果集划入应用了 row_number 函数的分区,类似于分组排序,写成存储过程如下

create proc sp_pager
(
    @size int,
    @index int
)
as
begin
    select * from ( select row_number() over(order by id ) as [rowId], * from table) as b
    where [rowId] between @size*(@index-1)+1  and @size*@index
end

到此这篇关于分享Sql Server 存储过程使用方法的文章就介绍到这了,更多相关Sql Server 存储过程内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • SQL中创建存储过程

    目录 创建SQL存储过程需要使用到的语法 无参数 带参 两个参数 declare关键字的使用 IF语句 case语句 loop语句 repeat while 创建SQL存储过程需要使用到的语法 - 创建存储过程 CREATE 存储过程的名称(参数)BEGIN...需要执行的SQL语句END - 调用 CALL 存储过程的名称(参数) 个人看法,这就是一个函数... 无参数 CREATE PROCEDURE p_student_select() BEGIN SELECT * FROM studen

  • MYSQL与SQLserver之间存储过程的转换方式

    目录 MYSQL与SQLserver之间存储过程的转换 mysql存储过程 sqlserver存储过程 SQLserver转MYSQL存储过程的经验 1. 存储过程的定义方式存在区别 2. 批处理分隔符存在差异 3. 可直接替换的关键字 4. select语句起别名的方式有区别 5. if语句的结构存在区别 6. cast语句的目标类型存在区别 7. 动态SQL执行语句的书写方式存在区别 8. 调用其它存储过程的方式存在区别 9. 创建临时表的书写方式存在区别 MYSQL与SQLserver之间

  • MySQL中的存储过程异常处理

    目录 1. condition 2.handler 3.diagnostics area 在使用MySQL存储过程时,其中的代码可能会出现运行错误从而导致异常,此时需要将存储过程中产生的异常捕获并打印出来 需要知道的概念: condition hanlder diagnostics area(诊断区) 1. condition 存储过程中出现的错误事件也就是异常都可以被称为condition. declare condition语法: DECLARE condition_name CONDITI

  • 详解MySQL中的存储过程和函数

    目录 区别 优点 创建储存函数和过程 储存过程 储存函数 查看储存过程 操作 变量 赋值 变量例子 定义条件和处理过程 条件 处理程序 游标 流程控制语句 储存过程和函数就是数据器将一些处理封装起来,调用 区别 调用储存过程只需要使用CALL,然后指定储存名称和参数,参数可以是IN.OUT和INOUT 调用储存函数只需要使用SELECT,指定名称和参数,储存函数必须有返回值,参数只能是IN 优点 良好的封装性 应用程序和SQL逻辑分离 让SQL也具有处理能力 减少网络交互 能够提高系统性能 降低

  • MySQL函数与存储过程字符串长度限制的解决

    目录 问题描述 原因分析: 解决方案: 问题描述 MySQL函数或者存储过程中使用group_concat()函数导致数据字符过长而报错 CREATE DEFINER=`root`@`%` PROCEDURE `get_pipe_child`(IN `in_pipe2Num` varchar(25),IN `in_sectionNum` varchar(5)) BEGIN  declare ids varchar(1000) default '';   declare tempids varch

  • MySQL存储过程参数的用法及说明

    目录 MySQL存储过程的参数 输入参数 输出参数 输入输出参数(INOUT) MySQL存储过程的参数 MySQL存储过程的参数共有三种: IN OUT INOUT 输入参数 输入参数(IN):在调用存储过程中传递数据给存储过程的参数(在调用的存储过程必须具有实际值的变量 或者 字面值) 细节注意:下面的存储过程创建会报错,他的类型以及类型长度需要和创建表字段的类型和类型长度一致 -- 创建一个存储过程:添加一个员工信息 DELIMITER $$ CREATE PROCEDURE proced

  • SQL Server存储过程中编写事务处理的方法小结

    本文实例讲述了SQL Server存储过程中编写事务处理的方法.分享给大家供大家参考,具体如下: SQL Server中数据库事务处理是相当有用的,鉴于很多SQL初学者编写的事务处理代码存往往存在漏洞,本文我们介绍了三种不同的方法,举例说明了如何在存储过程事务处理中编写正确的代码.希望能够对您有所帮助. 在编写SQL Server 事务相关的存储过程代码时,经常看到下面这样的写法: begin tran update statement 1 ... update statement 2 ...

  • SQL Server存储过程在C#中调用的简单实现方法

    0. 简介 [定义]:存储过程(Stored Procedure) 是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,它存储在数据库中,一次编译后永久有效,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它. [优缺点]:存储过程优缺点都非常的明显!几乎每一篇讨论存储过程的文字,都是会说其他优点是balabala,缺点是balabala,然而最后作者的结论都是:"我不推荐使用存储过程". 具体的存储过程的优缺点这里就不详述了! 公司旧项目使用存储过程实现业

  • go语言通过odbc访问Sql Server数据库的方法

    本文实例讲述了go语言通过odbc访问Sql Server数据库的方法.分享给大家供大家参考.具体如下: 这里需要用到go-odbc库,开源地址为:https://github.com/weigj/go-odbc 复制代码 代码如下: package main; import (     "fmt"     "database/sql"     _"odbc/driver" ) func main(){     conn,err := sql.O

  • C#实现异步连接Sql Server数据库的方法

    本文实例讲述了C#实现异步连接Sql Server数据库的方法.分享给大家供大家参考.具体分析如下: .net最新版提供了await方法,可以使我们可以很容易实现到数据库的异步连接 复制代码 代码如下: readonly string ConnectionString = "Data Source=database_server_name;Initial Catalog=Store;Integrated Security=True"; protected async void Exec

  • JavaScript基于activexobject连接远程数据库SQL Server 2014的方法

    本文实例讲述了JavaScript基于activexobject连接远程数据库SQL Server 2014的方法.分享给大家供大家参考,具体如下: 最近翻开一本10年前买的JavaScript的书,这本书买回来只看了前半部分,后面的一直没看,也一直没有从事这方的工作. 看到有一节写着js连access接数据库,于是照着书上的代码,写了一段在chrome浏览器中运行,发现完全没反应. 查了一下才发现,这个activexobject只有微软的IE支持,其他的浏览器都不支持,我想可能是由于连接数据库

  • Python基于Pymssql模块实现连接SQL Server数据库的方法详解

    本文实例讲述了Python基于Pymssql模块实现连接SQL Server数据库的方法.分享给大家供大家参考,具体如下: 数据库版本:SQL Server 2012. 按照Python版本来选择下载pymssql模块,这样才能连接上sql server. 我安装的python版本是3.5 ,64位的,所以下载的pymssql模块是:pymssql-2.1.3-cp35-cp35m-win_amd64.whl 我把文件下载后放到E盘,安装pymssql模块: C:\Users\Administr

  • 使用SQL SERVER存储过程实现历史数据迁移方式

    目录 1.什么是历史数据迁移? 2.历史数据迁移的目的 3.什么时候需要做历史数据迁移? 4.数据迁移的基本思路 6.使用场景特别说明 今天讲下软件开发中最常见的历史数据迁移方式.在讲迁移之前,先简单介绍下几个基本概念. 1.什么是历史数据迁移? 简单直白地说:就是将一些创建时间比较久而且不常用的历史数据,存储到另一个地方(可以是另一个数据,也可以是另一个表),一般历史数据迁移的数据,都是不会更改了的数据,后续只可能需要查询统计而已. 2.历史数据迁移的目的 减少在用数据库的数量,因为数据量越大

  • SQL SERVER存储过程用法详解

    目录 一.存储过程的概念 存储过程的优点 二.存储过程的分类 1.系统存储过程 2.临时存储过程 3.用户自定义存储过程 二.存储过程的用法 1.不带参数的存储过程,获取MyStudentInfo表的所有记录 2.创建带输入参数的存储过程 3.创建带默认值的输入参数的存储过程 4.创建带输出参数的存储过程(根据输入的ID返回年级ID) 5.创建带返回值的存储过程 6.创建带变量的存储过程 7.创建带输入输出参数的存储过程 8.创建分页存储过程 分页存储过程2 9.返回多个结果集 10.存储过程中

  • Sql Server存储过程详解

    从存储过程返回数据 - SQL Server | Microsoft 官方文档 存储过程它是真正的脚本,更准确地说,它是批处理(batch),但都不是很确切,它存储与数据库而不是单独的文件中. 存储过程中有输入参数,输出参数以及返回值等. 一.创建存储过程:CREATE PROC 创建存储过程的方法除了他使用AS关键字外,和创建数据库中任何其他对象一样.存储过程的基本语法如下: 在语法中,PROC是PROCEDURE的缩写,两个选项的意思一样.在对存储过程命名完之后,接着是参数列表.参数是可选

  • JSP连接MySql/MS SQL Server/Oracle数据库连接方法[整理]

    JSP连接MySql数据库方法 首先先将MySql的数据库连接驱动拷贝到Tomcat/common/lib包下 下载mysql-connector-java-5.1.6.zip http://mysql.cs.pu.edu.tw/Downloads/Connector-J/mysql-connector-java-5.1.6.zip 配置Tomcat的虚拟目录-略 创建jdbcMySql.jsp页面 页面代码如下: 复制代码 代码如下: <%@ page contentType="text

随机推荐