对于下面的存储函数,哪个是正确的标志: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 语句。