以下存储函数中,正确的标志是: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语句。