2013-02-18 65 views
3

對於下面的存儲函數,哪個是正確的標誌:CONTAINS SQL或NO SQL?MySQL存儲函數: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'),它們執行但不讀或寫數據。

  • 無SQL指示該例程不包含SQL語句。

回答