簡體   English   中英

MySQL 語法(函數)錯誤

[英]MySQL syntax (function) is error

CREATE FUNCTION FC_IDKRITERIA()
RETURNS CHAR(3)
AS
BEGIN
DECLARE @MAX INT , @KODEBARU CHAR(3)  
SELECT @MAX = MAX (RIGHT(IDKRITERIA,2)) FROM KRITERIA
IF @MAX IS NULL 
SET @MAX = 0
SET @KODEBARU = 'K' + RIGHT('0'+CONVERT(VARCHAR(3),@MAX+ 1 ) ,2)
RETURN @KODEBARU
END

過程中的每個語句都必須以;結尾; . 為了避免結束函數定義,請使用DELIMITER命令將命令分隔符更改為其他內容。

SELECT子句中進行變量賦值時,必須使用:=

函數定義的開頭沒有AS

您不聲明以@開頭的變量。

您需要在IF語句中使用THENEND IF

要連接字符串,請使用CONCAT() ,而不是+

您的CONVERT()參數順序錯誤,並且VARCHAR(3)不是有效的類型參數,它應該是CHAR(3)

在函數中,不能在頂層使用SELECT語句,因為這意味着返回結果集,而函數只能返回單個值。 所以你必須從(SELECT ...)表達式中分配@MAX

DELIMITER $$

CREATE FUNCTION FC_IDKRITERIA() RETURNS CHAR(3)
BEGIN
    SET @MAX = (SELECT MAX (RIGHT(IDKRITERIA,2)) FROM KRITERIA);
    IF @MAX IS NULL 
    THEN SET @MAX = 0;
    END IF;
    SET @KODEBARU = CONCAT('K', RIGHT('0'+CONVERT(@MAX+ 1, CHAR(3)) ,2));
    RETURN @KODEBARU;
END;
$$
DELIMITER ;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM