一、存储过程的修改:

  语法:  ALTER {PROCEDURE | FUNCTION} sp_name [characteristic……] 

  参数解释:

Sp_name:表示存储过程或函数的名称
characteristic:表示要修改存储过程的哪个部分
Characteristic取值如下
CONTAINS SQL:表示子程序包含SQL语句,但是,不包含读或写数据的语句
NO SQL:表示子程序中,不包含SQL语句
READS SQL DATA:表示子程序中,包含读数据的语句
MODIFIES DATA:表示子程序中,包含写数据的语句
SQL SECURITY {DEFINER | INVOKER}:指明谁有权限来执行
DEFINER:表示只有定义者,自己才能够执行
INVOKER:表示调用者可以执行
COMMENT’string’:表示注释信息

修改存储过程p_test的定义
将读写权限,改为MODIFIES SQL DATA,并指明调用者可以执行

 /*
Alter Procedure Statement
Source : MySQL documentation
*/
ALTER PROCEDURE p_test MODIFIES SQL DATA SQL SECURITY INVOKER;

  注意一点:

  尚未找到,或者MySQL还没有提供对已存在的存储过程代码进行修改的 方法(函数);但是可以通过MySQL管理工具进行修改;

二、存储过程的查看:

  这里使用到了 SELECT 函数: 

/*
Select Statement
Source : MySQL documentation
*/
SELECT [ STRAIGHT_JOIN ] [ SQL_SMALL_RESULT ]
[ SQL_BIG_RESULT ] [ SQL_BUFFER_RESULT ]
[ HIGH_PRIORITY ]
[ DISTINCT | DISTINCT ROW | ALL ]
select_expression,...
[ INTO {OUTFILE | DUMPFILE} \'file_name\' export_options ]
[ FROM table_references[ WHERE where_definition ]
[ GROUP BY {unsigned_integer | col_name | formula} [ ASC | DESC ], ... ]
[ HAVING where_definition ]
[ ORDER BY {unsigned_integer | col_name | formula} [ ASC | DESC ] ,... ]
[ LIMIT [ offset, ] rows ]
[ PROCEDURE procedure_name ]
FOR UPDATE | LOCK IN SHARE MODE ] ]

  参数解释:

[ STRAIGHT_JOIN ] :强制链接顺序
[ SQL_SMALL_RESULT ] :
[ SQL_BIG_RESULT ] :
[ SQL_BUFFER_RESULT ] :强制使用临时表

[ HIGH_PRIORITY ] :优先操作
[ DISTINCT | DISTINCT ROW | ALL ] :[去重、等价于DISTINCT(去重)、默认(所有)]

select_expression:

[ INTO {OUTFILE | DUMPFILE} \'file_name\' export_options ] 

 --   select into ....... 用于创建表的备份复件
SELECT * INTO new_table_name [IN externaldatabase] FROM old_tablename -- 只把需要的列插入新表
SELECT column_name(s) INTO new_table_name [IN externaldatabase] FROM old_tablename -- 实例 有 join 的语句 SELECT Persons.LastName,Orders.OrderNo INTO Persons_Order_Backup FROM Persons INNER JOIN Orders ON Persons.Id_P=Orders.Id_P

[ FROM table_references[ WHERE where_definition ] :查询数据

select * from table where column_name='column_name' 
[ GROUP BY {unsigned_integer | col_name | formula} [ ASC | DESC ], ... ]:分组
[ HAVING where_definition ]:对聚合后结果的限定 与where作用类似,可与group by 连用

 select pname,count(*) as cnt from ar  group by pname having count(*) >1

[ ORDER BY {unsigned_integer | col_name | formula} [ ASC | DESC ] ,... ]:排序
[ LIMIT [ offset, ] rows ]:限制
[ PROCEDURE procedure_name ]:查询存储过程
FOR UPDATE | LOCK IN SHARE MODE ] ]:

在SELECT 的读取锁定主要分为两种方式:

  SELECT ... LOCK IN SHARE MODE(共享锁)是读锁(只是不让别人写):在符合条件的rows上都加了共享锁,这样的话,其他session可以读取这些记录,也可以继续添加IS锁,但是无法修改这些记录直到你这个加锁的session执行完成(否则直接锁等待超时)

  SELECT ... FOR UPDATE (排它锁)是写锁(还不让别人加读锁):在数据库中上锁用的,可以为数据库中的行上一个排它锁。当一个事务的操作未完成时候,其他事务可以读取但是不能写入或更新

  由此可看出我们需要的查询存储过程的语句是:

 -- 查询当前数据库下的已知存储过程

 SELECT PROCEDURE p_test

 -- 查询数据库下所有的存储过程
SELECT NAME FROM mysql.proc WHERE db='数据库名'; -- 或者
SELECT routine_name FROM information_schema.routines WHERE routine_schema='数据库名'; -- 或者
SHOW PROCEDURE STATUS WHERE db='数据库名';
13
14 -- 查询某个存储过程的详细
15 SHOW CREATE PROCEDURE 数据库.存储过程名;

三、存储过程的删除:

    DROP PROCEDURE p_name 

  

MySQL存储过程(PROCEDURE)(二)的更多相关文章

  1. mysql 存储过程(二)

    存储过程(Stored Procedure): 一组可编程的函数,是为了完成特定功能的SQL语句集,经编译创建并保存在数据库中,用户可通过指定存储过程的名字并给定参数(需要时)来调用执行. 优点(为什 ...

  2. mysql存储过程(procedure)

    #创建带参数的存储过程 delimiter // ),out p int) begin ; end // delimiter call pro_stu_name_pass(@n,@p); select ...

  3. mysql存储过程procedure

    传送门 http://www.blogjava.net/sxyx2008/archive/2009/11/24/303497.html ) ); DROP PROCEDURE IF EXISTS ju ...

  4. MySql 存储过程总结

    MySql 存储过程 -- ---------------------------- -- Procedure structure for `proc_adder` -- -------------- ...

  5. MySQL存储过程详解 mysql 存储过程(二)

    mysql存储过程详解 1.      存储过程简介 我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的SQL ...

  6. MYSQL进阶学习笔记二:MySQL存储过程和局部变量!(视频序号:进阶_4-6)

    知识点三:MySQL存储过程和局部变量(4,5,6) 存储过程的创建:     创建存储过程的步骤: 首先选中数据库 改变分隔符,不让分号作为执行结束的标记.(通常情况下,改变分隔符命令 DELIMI ...

  7. Mysql存储过程二

    1.MySQL中创建存储过程时通过DEFINER和SQL SECURITY设置访问权限 procedure与function.trigger等创建时紧接着CREATE都有个definer可选项,该de ...

  8. MySQL 系列(二) 你不知道的数据库操作

    第一篇:MySQL 系列(一) 生产标准线上环境安装配置案例及棘手问题解决 第二篇:MySQL 系列(二) 你不知道的数据库操作 本章内容: 查看\创建\使用\删除 数据库 用户管理及授权实战 局域网 ...

  9. MySQL存储过程(转)

    一.MySQL 创建存储过程 "pr_add" 是个简单的 MySQL 存储过程,这个存储过程有两个 int 类型的输入参数 "a"."b" ...

  10. Mysql基础(二)

    学习路线:数据约束-> 数据库的设计过程-> 存储过程的相关知识-> 触发器-> 权限管理 (一)数据约束 1.1.默认值的设置 创建员工表emp 将默认地址设置为'中国'my ...

随机推荐

  1. B-Tree和B+Tree的区别

    B+树索引是B+树在数据库中的一种实现,是最常见也是数据库中使用最为频繁的一种索引.B+树中的B代表平衡(balance),而不是二叉(binary),因为B+树是从最早的平衡二叉树演化而来的.在讲B ...

  2. leanote折腾指南

    持续更新. 过几天把自己的修改好的css放到github上给大家参考. https://github.com/whuwangyong/leanote-conf TODO leanote Linux/W ...

  3. Python 练习——计算1-2+3-4...+99

    # 求1-99的所有数的和 count = 1 s = 0 while count < 100: s += count count += 1 print(s) 当都为正数时,即1+2+3+... ...

  4. Linux-KVM虚拟化

    kvm安装 1.在宿主机上准备好yum(只需要本地镜像yum就可以) 2.查看CPU是否支持inter或AMD的虚拟技术 # cat /proc/cpuinfo |grep -E "vmx| ...

  5. SaltStack配置管理和YAML

    配置管理和YAML 配置管理 所谓的配置管理,也称为状态管理,就是可以通过编写文件,文件的内容为安装什么功能.开启什么服务,执行什么任务等信息,然后通过salt的配置管理,指定minion来执行这些操 ...

  6. NFV-Bench A Dependability Benchmark for Network Function Virtualization Systems

    文章名称:NFV-Bench A Dependability Benchmark for Network Function Virtualization Systems 发表时间:2017 期刊来源: ...

  7. CSS3总结一:border(边框)

    Border-CSS1的属性 Border-CSS1:border Border-CSS1:border-style Border-CSS1:border-width Border-CSS1:bord ...

  8. XSS绕过小结

    0x00前言 我们友情进行XSS检查,偶然跳出个小弹窗,其中我们总结了一些平时可能用到的XSS插入方式,方便我们以后进行快速检查,也提供了一定的思路,其中XSS有反射.存储.DOM这三类,至于具体每个 ...

  9. windows查看已连接WIFI密码

    找到wifi图标. 右键,选择打开“网络和internet设置”,选择状态. 选择更改适配器设置. 选择你所连接的WIFI网络. 右键,选择状态. 选择无线属性. 选择安全. 勾选显示字符.

  10. HTTP协议 详解

    前言 掌握HTTP协议是每一个开发者的基础,超详细的HTTP协议笔记 正文 HTTP协议格式总览 HTTP line HTTP Method(方法) 介绍了我们请求希望执行的操作类型. 方法有: GE ...