mysql存储过程学习随笔

DELIMITER //  这个在mysql中是指定分隔符。默认都是;

DELIMITER ;// 这个就是改回;做为分隔符。

 

当头一棒。。 

当我尝试最简单的一个存储过程的时候,给我报错 access denied for user  反正是拒绝访问。。

继续蹂躏google 终于发现,错误出自用户。当我更改我的工具链接路径为localhost的时候就好了。当初的那个是个% 貌似%是被拒绝连接的。

好了,终于执行了第一个存储过程

create procedure p() select * from testselect 

执行,说影响0行。耗时0.000ms。。。。 局促不安的输入了另一条指令测试

call p();

结果出来了。哈哈,看来影响0行是因为刚只是存储了过程,并没有执行。哈哈

 

对了,这个方法名是大小写不敏感的,不要整了重复的名字出来

 

 

 

存储过程中才是合法的呢?你可以创建一个包含INSERT, UPDATE,DELETE, SELECT, DROP, CREATE, REPLACE包含等的语句。你唯一需要记住的是如果代码中如果有MySQL的扩充功能,那么改存储过程将不能被移植。

 

 

这里突然看到了很多的存储过程都用到了@sdf = ‘’ 等等的字样,这是什么东西呢。原来

全局变量

 

调用语法:
select * from user_info where id = @@global.admin_id — 例子,通过全局里配置的管理员id来取用户信息

以下是全局变量的一些常用命令,比较简单:

set global auto_increment_increment=1; — 设置序列的增长值
show global variables; —  显示所有的global变量
show global variables like ‘%test%’ — 查询包含test字符串的global变量

会话系统变量 , 主要用于在当前客户端连接的生命周期内.它的变量值是全局变量的一份拷贝.
如果连接断开, 对当前会话变量所做修改都会被重置.

比如, 服务器会话变量 autocommit 默认为 true , 而你在非常连的客户端连接里设置了 false , 那么在执行完sql后, 连接就会断开. 此后,如果创建新的连接来执行sql, autocommit又会默认 true.

会话变量的使用场景与全局类似,只是生命周期不同, 因此可以用来
统计同一连接内请求sql次数, sql类型等信息.

session变量的一些常用操作:

set session auto_increment_increment=1; — 设置序列的增长值
show variables; or show session variables; —  如果不指明, 默认使用session变量
show variables like ‘%test%’ or show session variables lile ‘%test%’ — 查询包含test字符串的session变量

用户变量

基于会话变量实现的, 可以暂存值, 并传递给同一连接里的下一条sql使用的变量.
当客户端连接退出时,变量会被释放.

应用场景:
同一连接,未关闭情况下,帮你暂存一些计算结果.
 

 

比如
select @admin_id:=max(id) from user_info;
select * from user_info where id = @admin_id
以上两条sql在同一connection中完成.
另外,注意,用户变量前只有1个@, 2个@是用于存取系统变量的

业务相关的变量定义太多,无法区分系统全局变量?

 

 

这类问题,可以通过mysql提供的结构化系统变量来解决.
他们有独特的表示形式:
instance_name.test_var
比一般的变量多了一个instance_name.这样,你就可以很方便地对他们进行分类,比如  app.test_var,就可以区别于系统的var了.
PS: 其实,普通的系统变量,它也属于结构化变量,只不过他们默认隶属于 default 这个 instance,  不需要显示出来罢了.
现在开始做图片解析程序,明天再继续学习

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值