日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

存儲過程和函數中的編譯錯誤

PolarDB PostgreSQL版(兼容Oracle)分析程序編譯存儲過程或函數時,它們確認CREATE語句和程序主體(程序中AS關鍵字后面的那部分)符合SPL和SQL構造的語法規則。默認情況下,如果分析程序檢測到錯誤,服務器將終止編譯過程。請注意,分析程序檢測表達式中的語法錯誤,而不是語義錯誤(即表達式引用不存在的列、表或函數,或不正確類型的值)。

如果在SPL代碼中遇到指定數量的錯誤,或在SQL代碼中遇到錯誤,spl.max_error_count會指示服務器停止分析。spl.max_error_count的默認值為10,最大值為1000。將spl.max_error_count設置為1會在SPL或SQL代碼中遇到第一個錯誤時指示服務器停止分析。

您可以使用SET命令為當前會話指定spl.max_error_count值。語法如下:

SET spl.max_error_count = number_of_errors;

其中number_of_errors指定在服務器停止編譯過程之前可以出現的SPL錯誤數。例如:

SET spl.max_error_count = 6;

示例指示服務器繼續通過所遇到的前5個SPL錯誤。當服務器遇到第6個錯誤時,它會停止驗證,并輸出6個詳細的錯誤消息和1個錯誤摘要。

為節省開發新代碼或從另一個源導入現有代碼所需的時間,您可以將spl.max_error_count配置參數設置為相對較高的錯誤數。

請注意,如果您指示服務器繼續分析而不管程序主體中的SPL代碼中的錯誤,并且分析程序在SQL代碼段中遇到錯誤,則錯誤的SQL代碼后面的任何SPL或SQL代碼中可能仍存在錯誤。例如,以下函數生成兩個錯誤:

CREATE FUNCTION computeBonus(baseSalary number) RETURN number AS
BEGIN
    bonus := baseSalary * 1.10;
    total := bonus + 100;
    RETURN bonus;
END;

返回結果如下:

ERROR:  "bonus" is not a known variable
LINE 3:     bonus := baseSalary * 1.10;
            ^
ERROR:  "total" is not a known variable
LINE 4:     total := bonus + 100;
            ^
ERROR:  compilation of SPL function/procedure "computebonus" failed due to 2 errors

以下示例將SELECT語句添加到上一個示例中。SELECT語句中的錯誤掩蓋了后面的其他錯誤:

CREATE FUNCTION computeBonus(employeeName number) RETURN number AS
BEGIN
    SELECT salary INTO baseSalary FROM emp
      WHERE ename = employeeName;
    bonus := baseSalary * 1.10;
    total := bonus + 100;
    RETURN bonus;
END;

返回結果如下:

ERROR:  "basesalary" is not a known variable
LINE 3:     SELECT salary INTO baseSalary FROM emp WHERE ename = emp...