SQL数据库存储过程
添加修改
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数据库存储过程的更多相关文章
- 我的sql数据库存储过程分页- -
以前用到数据库存储过程分页的时候都是用 not in 但是最近工作的时候,随着数据库记录的不断增大,发现not in的效率 真的不行 虽然都设置了索引,但是当记录达到10w的时候就发现不行了,都是需要 ...
- SQL 数据库 存储过程 视图
一.存储过程 1.概述 存储过程是一组编译在单个执行计划中的T-SQL语句 存储过程:就像函数一样的会保存在数据库中(可编程性) 存储过程的优点: 1.允许模块化程序设计 2.允许更快执行如果某操作需 ...
- 在易语言中调用MS SQL SERVER数据库存储过程方法总结
Microsoft SQL SERVER 数据库存储过程,根据其输入输出数据,笼统的可以分为以下几种情况或其组合:无输入,有一个或多个输入参数,无输出,直接返回(return)一个值,通过output ...
- 存储过程系列之存储过程sql数据库调用和程序代码调用
1.存储过程,无参数的存储过程 创建无参数存储存储过程 Create Procedure DCEMREMR_TEMPLATEAs SELECT TOP 10 [FILENAME],[FILETITLE ...
- 数据库存储过程 — Sql Server
Mysql.Oracle等主流关系型数据库基本都支持存储过程,这里使用Sql Server为例进行说明. 存储过程的概念: Sql Server存储过程 SQL Server 中的存储过程是由一个或多 ...
- MS SQL 中判断 数据库, 存储过程,表,临时表,视图,函数,用户,用户创建对象 等是否存在 SQL脚本
摘自: http://www.111cn.net/database/mssqlserver/39107.htm sql判断存储过程是否存在 判断数据库教程是否存在 Sql代码 if exists (s ...
- SQL数据库问题 解释一下下面的代码 sql 存储过程学习
SQL数据库问题 解释一下下面的代码 2008-08-13 11:30wssqyl2000 | 分类:数据库DB | 浏览1154次 use mastergocreate proc killspid( ...
- SQL Server数据库存储过程的异常处理
SQL Server数据库存储过程的异常处理是非常重要的,明确的异常提示能够帮助我们快速地找到问题的根源,节省很多时间.本文我们就以一个插入数据为例来说明SQL Server中的存储过程怎么捕获异常的 ...
- sql server 存储过程 以及java如何使用存储过程
Sql 语句 有一个test_table1表 他有两个字段 ID 和name proc是procedure的缩写 也就是存储过程,StuProc2为创建的存储过程名称 执行以下创建存储后会在Sql ...
随机推荐
- 爬虫----爬虫请求库selenium
一 介绍 selenium最初是一个自动化测试工具,而爬虫中使用它主要是为了解决requests无法直接执行JavaScript代码的问题 selenium本质是通过驱动浏览器,完全模拟浏览器的操作, ...
- Excel相关操作
public static bool DataSetToExcel(DataSet dataSet, string filePath, bool isShowExcle = true) { DataT ...
- 精彩看点 | GIAC大会PPT+视频合集全量放送!
GIAC是中国互联网技术领域的行业盛事,每年从互联网架构最热门的系统架构设计.人工智能.机器学习.工程效率.区块链.分布式架构等领域甄选前沿有典型代表的技术创新及研发实践的架构案例,分享他们在本年度最 ...
- Node.js编程规范
摘自:https://github.com/dead-horse/node-style-guide https://github.com/felixge/node-style-guide 2空格缩进 ...
- 如何从视频中分离出音乐,和对音乐做分割,合并的处理(瑞典音乐家-新八宝盒.mp3.rar下载)
点击下载:瑞典音乐家-新八宝盒.mp3.rar 1.工具 Total Video Converter 3.71 视频处理(安装软件,有绿色版的) MP3剪切器 MP3剪切器(小工具) Mp3mateP ...
- java mvc spring boot
spring mvchttp://www.cnblogs.com/wcf6676/p/5333352.html 利用mybatis-generator自动生成代码http://www.cnblogs. ...
- linux fix the superblock by dumpe2fs fsck
It seems that you have a bad superblock. To fix this: Firstly, boot into a live CD or USB Find out y ...
- JDBC---Mysql(1)
使用MySQL需要导mysql-connector-java-5.1.7-bin.jar包 所有的java.sql.Driver实现类,都提供了static块,块内的代码就是把自己注册到DriverM ...
- NOIP 2018 day1 题解
今年noip的题和去年绝对是比较坑的题了,但是打好的话就算是普通水准也能350分以上吧. t1: 很显然这是一个简单的dp即可. #include<iostream> #include&l ...
- Delphi maskedit控件的掩码含义及用法方法
Delphi maskedit控件的掩码含义及用法方法 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 2 ...