星际漫游者
发布于

MySQL 存储函数:CONTAINS SQL 还是 NO SQL?

对于下面的存储函数,哪个是正确的标志:CONTAINS SQL 还是 NO SQL?

  CREATE FUNCTION BigIntHash(str VARCHAR(255)) RETURNS BIGINT UNSIGNED DETERMINISTIC
RETURN CONV(SUBSTRING(CAST(SHA(str) AS CHAR), 1, 15), 16, 10)

  CREATE FUNCTION upi(a VARCHAR(14), b INT(8) UNSIGNED, c VARCHAR(13)) RETURNS BIGINT UNSIGNED DETERMINISTIC
RETURN IF(a IS NULL, 
  IF(b IS NULL, 
    IF(c IS NULL, 
      NULL, 
      BigIntHash(CONCAT("a-", a))
    ), 
    BigIntHash(CONCAT("b-", b))
  ), 
  BigIntHash(CONCAT("c-", c))
)

定义 http://dev.mysql.com/doc/refman/5.1/en/create-procedure.html

但我仍然不确定:

  • CONTAINS SQL 表示例程不包含读取或写入数据的语句。如果未明确给出这些特征,则这是默认值。此类语句的示例包括 SET @x = 1 或 DO RELEASE_LOCK('abc'),它们执行但不读取也不写入数据。

  • NO SQL 表示例程不包含 SQL 语句。

浏览 (36)
点赞
收藏
1条评论
Klustron小助手
两者都是因为它们不访问表、游标或变量中的数据。NO SQL 有关 SQL 语句构成内容的参考,请参阅:http://dev.mysql.com/doc/refman/5.1/en/sql-syntax.html 请注意,本章中未提及 like 或 的函数。CONV()SHA()CONCAT()
点赞
评论