存储过程和函数作为数据库的一部分,为什么是学习之痛。

项目实际开发,考虑性能和代码维护,绝对不用存储过程。

如果单纯自己写个小程序糊弄人玩,还可以写写。

【学习】

在数据库中定义一些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!!!

好了到此为止了!学的知识实际应用不上!!!

学习之痛(数据库->存储过程和函数)的更多相关文章

  1. Oracle数据库—— 存储过程与函数的创建

    一.涉及内容 1.掌握存储过程与函数的概念. 2.能够熟练创建和调用存储过程与函数. 二.具体操作 1.创建存储过程,根据职工编号删除scott.emp表中的相关记录. (1)以scott 用户连接数 ...

  2. PL/SQL学习(四)存储过程和函数

    原文参考:http://plsql-tutorial.com/ PL/SQL存储过程 存储过程相当于一个有名字的PL/SQL块,经过第一次编译后再次调用时不需要再次编译 创建格式: CREATE [O ...

  3. MySQL学习笔记:调用存储过程或函数报1418错误

    问题 MySQL开启bin-log后,调用存储过程或者函数以及触发器时,会出现错误号为1418的错误: ERROR 1418 (HY000): This function has none of DE ...

  4. Oracle学习(十二):存储过程/存储函数

    1.知识点 --第一个存储过程 /* 打印Hello World create [or replace] PROCEDURE 过程名(參数列表) AS PLSQL子程序体: 调用存储过程: 1. ex ...

  5. MySQL学习笔记:删除存储过程和函数

    删除存储过程.存储函数主要使用drop语句: drop procedure  —— 删除存储过程 drop function  —— 删除存储函数 语法: DROP {PROCEDURE|FUNCTI ...

  6. SQL Server 查询某一个数据库存储过程、函数是否包含某一个内容或者脚本

    SELECT obj.Name 名称, sc.TEXT 内容FROM syscomments scINNER JOIN sysobjects obj ON sc.Id = obj.IDWHERE sc ...

  7. MYSQL数据库学习十四 存储过程和函数的操作

    14.1 为什么使用存储过程和函数 一个完整的操作会包含多条SQL语句,在执行过程中需要根据前面SQL语句的执行结果有选择的执行后面的SQL语句. 存储过程和函数的优点: 允许标准组件式编程,提高了S ...

  8. 我的MYSQL学习心得(十) 自定义存储过程和函数

    我的MYSQL学习心得(十) 自定义存储过程和函数 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心 ...

  9. Mysql学习笔记(十)存储过程与函数 + 知识点补充(having与where的区别)

    学习内容:存储程序与函数...这一章学的我是云里雾里的... 1.存储过程...   Mysql存储过程是从mysql 5.0开始增加的一个新功能.存储过程的优点其实有很多,不过我觉得存储过程最重要的 ...

随机推荐

  1. CodeForces - 417A(思维题)

    Elimination Time Limit: 1000MS   Memory Limit: 262144KB   64bit IO Format: %I64d & %I64u Submit  ...

  2. Ubuntu 更新源

    1.首先备份Ubuntu12.04源列表 sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup (备份下当前的源列表) 2.修改更新源 ...

  3. Android ViewHolder工具

    import android.util.SparseArray; import android.view.View; /** * 封装了setTag()和getTag()方法 * 封装了findVie ...

  4. FileHelper-文件操作辅助类

    using System; using System.Collections.Generic; using System.IO; using System.Text; namespace Whir.S ...

  5. ContentProvider往通讯录添加联系人和获取联系人

    public class MainActivity extends Activity { private People people; private List<People> pList ...

  6. Linux常用命令_(文件查看)

    文件查看主要有以下命令 cat.tac.more.less.head.tail.nl cat命令:是一个文本文件查看和连接工具.从第一个字节开始正向查看文件的内容,适用于小文件 以第一行开始,显示没有 ...

  7. Unity3D Built-in Shader详解一

    Unity3D内置了很多Shader,文档很详细,自己翻一下.便于加深印象. 首先先解释下Unity3D的Shader.Unity里面的Shaders是使用一种叫ShaderLab的语言编写的,它同微 ...

  8. Pebbles

    Pebbles Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Sub ...

  9. 在桌面chrome中调试android设备中的web页面

    准备工作 1, 桌面版chrome 2, Android设备(安装有chrome浏览器) 3, Android-sdk Android-sdk安装及设置 SKD安装 从http://developer ...

  10. 仿windows8 开始菜单 实现HubTileBase 以及仿鲜果联播实现 PulsingTile(脉冲磁贴)

    http://blog.csdn.net/wangrenzhu2011/article/details/8750820 (转) 本文章将以如何实现 开始菜单上的tile 为主. 该控件代码经过测试可直 ...