MySQL 5.0 新特性教程 存储过程:第二讲

来源:mysql 作者:AB;翻译:陈朋奕 2007-12-09 出处:pcdog.com

db2  存储过程  调用存储过程  数据库  数据库操作  
上一页 1 2 3 4 5 6 7 8 下一页 

  3.

CREATE PROCEDURE p2 ()
LANGUAGE SQL
NOT DETERMINISTIC <--
SQL SECURITY DEFINER
COMMENT 'A Procedure'
SELECT CURRENT_DATE, RAND() FROM t //


  下一个子句,NOT DETERMINISTIC,是传递给系统的信息。这里一个确定过程的定义就是那些每次输入一样输出也一样的程序。在这个案例中,既然主体中含有SELECT语句,那返回肯定是未知的因此我们称其NOT DETERMINISTIC。但是MySQL内置的优化程序不会注意这个,至少在现在不注意。

  4.

CREATE PROCEDURE p2 ()
LANGUAGE SQL
NOT DETERMINISTIC
SQL SECURITY DEFINER <--
COMMENT 'A Procedure'
SELECT CURRENT_DATE, RAND() FROM t //

  下一个子句是SQL SECURITY,可以定义为SQL SECURITY DEFINER或SQL SECURITY INVOKER。
  这就进入了权限控制的领域了,当然我们在后面将会有测试权限的例子。

SQL SECURITY DEFINER


  意味着在调用时检查创建过程用户的权限(另一个选项是SQLSECURITY INVOKER)。
  现在而言,使用

SQL SECURITY DEFINER


  指令告诉MySQL服务器检查创建过程的用户就可以了,当过程已经被调用,就不检查执行调用过程的用户了。而另一个选项(INVOKER)则是告诉服务器在这一步仍然要检查调用者的权限。

  5.

CREATE PROCEDURE p2 ()
LANGUAGE SQL
NOT DETERMINISTIC
SQL SECURITY DEFINER
COMMENT 'A Procedure' <--
SELECT CURRENT_DATE, RAND() FROM t //


  COMMENT 'A procedure'
  是一个可选的注释说明。


更多内容请看PCdog.com--Fireworks教程  mysql 存储过程  MySQL数据备份专题
上一页 1 2 3 4 5 6 7 8 下一页 
上一篇:MySQL 5.0 新特性教程 存储过程:第三讲
下一篇:MySQL 5.0新特性教程 存储过程:第一讲