MySQL存储函数:是否包含SQL?
对于下面的存储函数,哪个是正确的标志:包含SQL还是不包含SQLMySQL存储函数:是否包含SQL?,mysql,stored-functions,Mysql,Stored Functions,对于下面的存储函数,哪个是正确的标志:包含SQL还是不包含SQL CREATE FUNCTION BigIntHash(str VARCHAR(255)) RETURNS BIGINT UNSIGNED DETERMINISTIC RETURN CONV(SUBSTRING(CAST(SHA(str) AS CHAR), 1, 15), 16, 10) 及 定义已打开,但我仍不确定: 包含SQL表示例程不包含读取或写入数据的语句。如果没有明确给出这些特征,则这是默认值。这类语句的示例有SET
CREATE FUNCTION BigIntHash(str VARCHAR(255)) RETURNS BIGINT UNSIGNED DETERMINISTIC
RETURN CONV(SUBSTRING(CAST(SHA(str) AS CHAR), 1, 15), 16, 10)
及
定义已打开,但我仍不确定:
- 包含SQL表示例程不包含读取或写入数据的语句。如果没有明确给出这些特征,则这是默认值。这类语句的示例有SET@x=1或DO RELEASE_LOCK('abc'),它们执行时既不读取也不写入数据
- 无SQL表示例程不包含SQL语句
无SQL
,因为它们不访问表、游标或变量中的数据
有关构成SQL语句的内容的参考,请参见:
请注意,像CONV()
SHA()
或CONCAT()
这样的函数在本章中没有提到
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))
)