学习之痛(数据库->存储过程和函数)
存储过程和函数作为数据库的一部分,为什么是学习之痛。
项目实际开发,考虑性能和代码维护,绝对不用存储过程。
如果单纯自己写个小程序糊弄人玩,还可以写写。
【学习】
在数据库中定义一些SQL语句集合,然后直接调用这些存储过程和函数来执行已经定义好的SQL语句。
避免开发人员重复编写相同的SQL语句。
在MySql服务器中存储和执行,可以减少客户端和服务端的数据传输。
delimiter && create procedure pro_book(in bT int,out count_num int) reads sql data begin select count(*) from t_book where bookTypeId=bT; end && delimiter ; call pro_book(1,@total);
函数
delimiter && create function func_book(bookId int) returns varchar(20) begin return( select bookName from t_book where id=bookId); end && delimiter ; select func_book(1);

●变量的使用
delimiter &&
create procedure pro_user()
begin
declare a,b varchar(20);
insert into t_user values(NULL,a,b);
end
&&
delimiter ;
call pro_user();
●为变量赋值
delimiter &&
create procedure pro_user2()
begin
declare a,b varchar(20);
set a='jjj',b='888';
insert into t_user values(NULL,a,b);
end
&&
delimiter ;
call pro_user2();
delimiter &&
create procedure pro_user3()
begin
declare a,b varchar(20);
select name,pass into a,b from t_user2 where id=1;
insert into t_user values(NULL,a,b);
end
&&
delimiter ;
call pro_user3();
●游标的使用
delimiter &&
create procedure pro_user4()
begin
declare a,b varchar(20);
declare cur_t_user2 cursor for select name,pass from t_user2;
open cur_t_user2;
fetch cur_t_user2 into a,b;
insert into t_user values(NULL,a,b);
close cur_t_user2;
end
&&
delimiter ;
call pro_user4();
●流程控制的使用
存储过程和函数中可以使用流程控制。MySql使用if、case、loop、leave、iterate、repeat、while来控制。
●if语句
delimiter &&
create procedure pro_user5(in n int)
begin
select count(*) into @num from t_user2 where id=n;
if @num>0 then update t_user2 set name='yyy',pass='555' where id=n;
else insert into t_user2 values(NULL,'java','1234');
end if;
end
&&
delimiter ;
call pro_user5(1);
call pro_user5(3);
●case语句
STOP!!!
STOP!!!
STOP!!!
好了到此为止了!学的知识实际应用不上!!!
学习之痛(数据库->存储过程和函数)的更多相关文章
- Oracle数据库—— 存储过程与函数的创建
一.涉及内容 1.掌握存储过程与函数的概念. 2.能够熟练创建和调用存储过程与函数. 二.具体操作 1.创建存储过程,根据职工编号删除scott.emp表中的相关记录. (1)以scott 用户连接数 ...
- PL/SQL学习(四)存储过程和函数
原文参考:http://plsql-tutorial.com/ PL/SQL存储过程 存储过程相当于一个有名字的PL/SQL块,经过第一次编译后再次调用时不需要再次编译 创建格式: CREATE [O ...
- MySQL学习笔记:调用存储过程或函数报1418错误
问题 MySQL开启bin-log后,调用存储过程或者函数以及触发器时,会出现错误号为1418的错误: ERROR 1418 (HY000): This function has none of DE ...
- Oracle学习(十二):存储过程/存储函数
1.知识点 --第一个存储过程 /* 打印Hello World create [or replace] PROCEDURE 过程名(參数列表) AS PLSQL子程序体: 调用存储过程: 1. ex ...
- MySQL学习笔记:删除存储过程和函数
删除存储过程.存储函数主要使用drop语句: drop procedure —— 删除存储过程 drop function —— 删除存储函数 语法: DROP {PROCEDURE|FUNCTI ...
- SQL Server 查询某一个数据库存储过程、函数是否包含某一个内容或者脚本
SELECT obj.Name 名称, sc.TEXT 内容FROM syscomments scINNER JOIN sysobjects obj ON sc.Id = obj.IDWHERE sc ...
- MYSQL数据库学习十四 存储过程和函数的操作
14.1 为什么使用存储过程和函数 一个完整的操作会包含多条SQL语句,在执行过程中需要根据前面SQL语句的执行结果有选择的执行后面的SQL语句. 存储过程和函数的优点: 允许标准组件式编程,提高了S ...
- 我的MYSQL学习心得(十) 自定义存储过程和函数
我的MYSQL学习心得(十) 自定义存储过程和函数 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心 ...
- Mysql学习笔记(十)存储过程与函数 + 知识点补充(having与where的区别)
学习内容:存储程序与函数...这一章学的我是云里雾里的... 1.存储过程... Mysql存储过程是从mysql 5.0开始增加的一个新功能.存储过程的优点其实有很多,不过我觉得存储过程最重要的 ...
随机推荐
- codeforces 468A. 24 Game 解题报告
题目链接:http://codeforces.com/problemset/problem/468/A 题目意思:给出一个数n,利用 1 - n 这 n 个数,每个数只能用一次,能否通过3种运算: + ...
- eclipse 优化提速
1.windows–>perferences–>general–>startup and shutdown关掉没用的启动项: WTP :一个跟myeclipse差不多的东西,主要差别 ...
- hadoop中常见的问题
一.在root下进行格式化 这样很糟糕 这样的话,若是第一次装的话,我的建议是将生成的文件都删掉,恢复到最开始的状态, 1. 首先你需要删除 vi conf/hdfs-site.xml 配置文件的 ...
- svn 文件夹 无法提交
[root@v01 www]# svn add localsvn/kkk/ svn: warning: 'localsvn/kkk' is already under version control ...
- 无线ap和路由器wifi热点怎么区分和区别
转自:http://blog.sina.com.cn/s/blog_5a6efa330101yrzh.html 有的人发现无线ap和无线路由器都可以实现无线上网,于是到无线市场买了个相当便宜的无线ap ...
- 记C语言浮点数运算处理 "坑" 一则
看一小段C语言程序: int main() { float x = 1.3; x = x - (int)x; ); ; } 在你心目中, 变量 I 是怎样的结果? 如果你理所当然地认为是3的话, 那么 ...
- Xamarin.Android开发实践(十二)
Xamarin.Android之ContentProvider 一.前言 掌握了如何使用SQLiteOpenHelper之后,我们就可以进行下一步的学习.本章我们将会学习如何使用ContentProv ...
- ML 04、模型评估与模型选择
机器学习算法 原理.实现与实践——模型评估与模型选择 1. 训练误差与测试误差 机器学习的目的是使学习到的模型不仅对已知数据而且对未知数据都能有很好的预测能力. 假设学习到的模型是$Y = \hat{ ...
- AutoCompleteTextView自动填充文本
布局: <AutoCompleteTextView android:id="@+id/auto" android:layout_width="match_paren ...
- 使用github上的开源框架SlidingMenu环境的搭建,以及getSupportActionBar方法不能找到的问题
http://blog.csdn.net/lovexieyuan520/article/details/9814273 使用github上的开源框架SlidingMenu环境的搭建,以及getSupp ...