아래의 저장된 함수에 대해 올바른 플래그가 있습니다. CONTAINS SQL 또는 NO SQL?MySQL의 함수 저장 : 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에 있지만 난 아직 확실하지 않다 :
는 SQL 루틴 읽기 문을 포함하거나 기록하지 않음을 나타냅니다 CONTAINS 데이터. 이러한 특성 중 어느 것도 명시 적으로 지정되지 않은 경우 이것이 기본값입니다. 이러한 명령문의 예로 SET @x = 1 또는 DO RELEASE_LOCK ('abc')이 있습니다.이 명령은 데이터를 읽거나 쓰지는 않습니다.
NO SQL은 루틴에 SQL 문이 없음을 나타냅니다.
감사합니다. – Jan