簡體   English   中英

如何將 ENUM 變量作為 POSTGRESQL 函數的輸入傳遞

[英]How to pass ENUM variable as input for POSTGRESQL functions

我在 MySQL 中有一個功能正常的函數:

CREATE  PROCEDURE `Accounts_Active`(IN_DeptName VARCHAR(255), IN_Src ENUM('TRAINING','ELZA'))
BEGIN
END$$
DELIMITER ;

但是當轉換為 PostgreSQL 時:

CREATE or replace FUNCTION Accounts_Active(IN_DeptName VARCHAR(255), IN_Src ENUM('TRAINING','ELZA'))
RETURNS void
AS
$$
BEGIN
      RAISE INFO '    ';
END;
$$ LANGUAGE plpgsql;

出現以下錯誤:

ERROR:  type enum does not exist
SQL state: 42704

任何有關如何修復此錯誤的指導將不勝感激。

創建枚舉數據類型:

CREATE TYPE atype AS ENUM ('TRAINING', 'ELZA');

然后您可以將其用作函數參數:

CREATE FUNCTION Accounts_Active(
   IN_DeptName text,
   IN_Src atype
) RETURNS void
...

使用枚舉時,請記住您可以向此類數據類型添加值,但永遠不要再刪除它們。 通常你會更好地使用像text這樣的字符串數據類型,但當然你必須編寫代碼來檢查輸入的有效性。

暫無
暫無

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

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