添加修改

create PROCEDURE sp_insert_1(
pid int,
pname varchar(200),
page varchar(200),
pscore int,
out code int,
out msg varchar(200)
)
lb:BEGIN
DECLARE t_error int DEFAULT 0;
DECLARE CONTINUE HANDLER for SQLEXCEPTION set t_error=1;
start TRANSACTION;
IF pid=0
THEN /*添加*/
set @exist=(select count(*) from studentweek3 where name =pname);
IF @exist>0 THEN/*存在*/
set code=1;set msg='用户名已存在';
ROLLBACK;LEAVE lb;
ELSE/*不存在*/
insert into studentweek3(name,age,score) values(pname,page,pscore);
END IF;
ELSE/*修改*/
update studentweek3 set name=pname,age=page,score=pscore where id=pid;
END IF;
/*错误判断*/
IF t_error=1 THEN set code=1;set msg='保存失败';ROLLBACK;
ELSE
set code=0;set msg='保存成功';COMMIT;
END IF;
END

分页

create PROCEDURE sp_pager(pageindex int,pagesize int,out pagecount int,out datacount int,name varchar(50),sex varchar(50),xuehao int)
BEGIN
set @pageindex=pageindex;
set @pagesize=pagesize;
set @pagecount=0;
set @datacount=0;
set @name=name;
set @sex=sex;
set @xuehao=xuehao;
/*分页sql*/
set @pagesql=concat(
"select * from student where 1=1 ",
if(@name='','',concat(' and name like "%',@name,'%" ')),
if(@sex='','',concat(' and sex="',@sex,'"')),
if(@xuehao=0,'',concat(' and id="',@xuehao,'"')),
' limit ',(@pageindex-1)*@pagesize,',',@pagesize,''
);
PREPARE s1 from @pagesql;
EXECUTE s1;/*执行分页查询*/

/*数据总数输出变量*/
set @countSql=concat('set @datacount=(select count(*) from student where 1=1 ',
if(@name='','',concat(' and name like "%',@name,'%" ')),
if(@sex='','',concat(' and sex="',@sex,'"')),
if(@xuehao=0,'',concat(' and id="',@xuehao,'"')),
')');

PREPARE s2 from @countsql;
EXECUTE s2;
set datacount=@datacount;/*数据总数输出参数赋值*/

/*页总数输出变量赋值*/
set @pagecount=CEIL(@datacount*1.0/@pagesize);
set pagecount=@pagecount;/*赋值输出变量页面总数*/

END

SQL数据库存储过程的更多相关文章

  1. 我的sql数据库存储过程分页- -

    以前用到数据库存储过程分页的时候都是用 not in 但是最近工作的时候,随着数据库记录的不断增大,发现not in的效率 真的不行 虽然都设置了索引,但是当记录达到10w的时候就发现不行了,都是需要 ...

  2. SQL 数据库 存储过程 视图

    一.存储过程 1.概述 存储过程是一组编译在单个执行计划中的T-SQL语句 存储过程:就像函数一样的会保存在数据库中(可编程性) 存储过程的优点: 1.允许模块化程序设计 2.允许更快执行如果某操作需 ...

  3. 在易语言中调用MS SQL SERVER数据库存储过程方法总结

    Microsoft SQL SERVER 数据库存储过程,根据其输入输出数据,笼统的可以分为以下几种情况或其组合:无输入,有一个或多个输入参数,无输出,直接返回(return)一个值,通过output ...

  4. 存储过程系列之存储过程sql数据库调用和程序代码调用

    1.存储过程,无参数的存储过程 创建无参数存储存储过程 Create Procedure DCEMREMR_TEMPLATEAs SELECT TOP 10 [FILENAME],[FILETITLE ...

  5. 数据库存储过程 — Sql Server

    Mysql.Oracle等主流关系型数据库基本都支持存储过程,这里使用Sql Server为例进行说明. 存储过程的概念: Sql Server存储过程 SQL Server 中的存储过程是由一个或多 ...

  6. MS SQL 中判断 数据库, 存储过程,表,临时表,视图,函数,用户,用户创建对象 等是否存在 SQL脚本

    摘自: http://www.111cn.net/database/mssqlserver/39107.htm sql判断存储过程是否存在 判断数据库教程是否存在 Sql代码 if exists (s ...

  7. SQL数据库问题 解释一下下面的代码 sql 存储过程学习

    SQL数据库问题 解释一下下面的代码 2008-08-13 11:30wssqyl2000 | 分类:数据库DB | 浏览1154次 use mastergocreate proc killspid( ...

  8. SQL Server数据库存储过程的异常处理

    SQL Server数据库存储过程的异常处理是非常重要的,明确的异常提示能够帮助我们快速地找到问题的根源,节省很多时间.本文我们就以一个插入数据为例来说明SQL Server中的存储过程怎么捕获异常的 ...

  9. sql server 存储过程 以及java如何使用存储过程

    Sql 语句 有一个test_table1表  他有两个字段  ID 和name proc是procedure的缩写 也就是存储过程,StuProc2为创建的存储过程名称 执行以下创建存储后会在Sql ...

随机推荐

  1. <target>.ID 和 <source>.ID 的属性冲突: DataType 属性不匹配

    ORACLE数据库主键的数据类型为number ,如果不指定长度会有 Merge报 <target>.ID 和 <source>.ID 的属性冲突: DataType 属性不匹 ...

  2. [No0000CB]如何在命令行(cmd)通过TCP/IP端口(port)查询所在的进程号(pid)或进程名称,并终止该进程

      1)首先查找占用某个端口的进程PID netstat -ano | findstr [port] 2)根据该进程pid查询进程名称或标题,确认那个程序在占用该端口 tasklist /v | fi ...

  3. tensorflow 计算均值和方差

    我们在处理矩阵数据时,需要用到数据的均值和方差,比如在batch normalization的时候. 那么,tensorflow中计算均值和方差的函数是:tf.nn.moments(x, axes) ...

  4. 2015年蓝桥杯省赛A组c++第4题

    /* StringInGrid函数会在一个指定大小的格子中打印指定的字符串. 要求字符串在水平.垂直两个方向上都居中. 如果字符串太长,就截断. 如果不能恰好居中,可以稍稍偏左或者偏上一点. 下面的程 ...

  5. [about remote controller]--mstsc-teamviewer-vnc,nomachine

    https://www.jianshu.com/p/c80db368ed8a https://www.nomachine.com/download Ubuntu安装VNC,VNC却无法随系统启动,遂换 ...

  6. Java8 in action

    解决的问题: behavior parameterization,即可以把一段code,逻辑作为参数传入: 这样做的目的,当然为了代码抽象和重用,把变化的逻辑抽象出去: 在java中,如果要实现beh ...

  7. LeetCode 812 Largest Triangle Area 解题报告

    题目要求 You have a list of points in the plane. Return the area of the largest triangle that can be for ...

  8. tensorflow入门笔记(五) name_scope和variable_scope

    一.上下文管理器(context manager) 上下文管理器是实现了上下文协议的对象,主要用于资源的获取与释放.上下文协议包括__enter__.__exit__,简单说就是,具备__enter_ ...

  9. java 集合(一)ArrayList的继承树

    这是ArrayList的继承树,它继承了AbstractCollection抽象类,AbstractCollection类实现了Collection接口,Collection接口继承Iterable接 ...

  10. 【python基础】os.path模块常用方法详解

    os.path模块 主要用于文件的属性获取,在编程中经常用到,以下是该模块的几种常用方法. 更多的方法可以去查看官方文档:http://docs.python.org/library/os.path. ...