WEB开发网
开发学院数据库MySQL MySQL 5.0 新特性--存储过程 阅读

MySQL 5.0 新特性--存储过程

 2007-02-13 10:53:46 来源:WEB开发网   
核心提示: 5.CREATE PROCEDURE p2 ()LANGUAGE SQLNOT DETERMINISTICSQL SECURITY DEFINERCOMMENT 'A Procedure' <--SELECT CURRENT_DATE, RAND() FROM t /

5.CREATE PROCEDURE p2 ()

LANGUAGE SQL

NOT DETERMINISTIC

SQL SECURITY DEFINER

COMMENT 'A Procedure' <--

SELECT CURRENT_DATE, RAND() FROM t //

COMMENT 'A procedure'

是一个可选的注释说明。

最后,注释子句会跟过程定义存储在一起。这个没有固定的标准,我在文中会指出没有固定标准的语句,不过幸运的是这些在我们标准的SQL中很少。

6.CREATE PROCEDURE p2 ()

LANGUAGE SQL

NOT DETERMINISTIC

SQL SECURITY DEFINER

COMMENT ''

SELECT CURRENT_DATE, RAND() FROM t //

上面过程跟下面语句是等效的:

CREATE PROCEDURE p2 ()

SELECT CURRENT_DATE, RAND() FROM t //

特征子句也有默认值,如果省略了就相当于:

LANGUAGE SQL NOT DETERMINISTIC SQL SECURITY DEFINER COMMENT ''

Digressions一些题外话

Digression:

调用p2()//的结果

  mysql> call p2() //
   +--------------+-----------------+
   | CURRENT_DATE | RAND() |
   +--------------+-----------------+
   | 2004-11-09 | 0.7822275075896 |
   +--------------+-----------------+
   1 row in set (0.26 sec)
   Query OK, 0 rows affected (0.26 sec)

当调用过程p2时,一个SELECT语句被执行返回我们期望获得的随机数。

Digression: sql_mode unchanging

不会改变的

  sql_mode
   mysql> set sql_mode='ansi' //
   mysql> create procedure p3()select'a'||'b'//
   mysql> set sql_mode=''//
   mysql> call p3()//
   +------------+
   | 'a' || 'b' |
   +------------+
   | ab |
   +------------+

MySQL在过程创建时会自动保持运行环境。例如:我们需要使用两条竖线来连接字符串但是这只有在sql mode为ansi的时候才合法。如果我们将sql mode改为non-ansi,不用担心,它仍然能工作,只要它第一次使用时能正常工作。

上一页  4 5 6 7 8 9 10  下一页

Tags:MySQL 特性 存储

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接