簡體   English   中英

PostgreSQL 存儲過程(函數)的正確語法是什么?

[英]What is the proper syntax for PostgreSQL stored procedures (functions)?

我正在嘗試在 PostgreSQL 中編寫兩種類型的存儲過程。 據我了解,Postgre 只有功能。 我想知道是否有人可以查看我的代碼並提供指針。 另外,我不熟悉命令的間距/新行。

第一個 function 需要從用戶那里獲取輸入並將其添加到表中。 假設我們有一個表名“Car”,屬性為“model”和“year”。 這將是正確存儲的 function 以將新車添加到表中嗎?

CREATE OR REPLACE FUNCTION
    addto_car(model IN Car.model%type, year IN Car.year%type)
RETURNS
    void
AS $$
BEGIN
    INSERT INTO Car VALUES(model, year);
END;
$$ LANGUAGE plpgsql; (#Is this correct? I'm using postgresql 9)

---------- 進行中代碼Function 1

CREATE OR REPLACE FUNCTION
    addto_car(In model Car.model%type, IN year Car.year%type)
AS $$
BEGIN
    INSERT INTO Car VALUES(model, year);
END;
$$ LANGUAGE plpgsql;

這現在有效。 (將值 model 和年份插入汽車)。

來自官方文檔

CREATE [ OR REPLACE ] FUNCTION
    name ( [ [ argmode ] [ argname ] argtype [ { DEFAULT | = } default_expr ] [, ...] ] )
    [ RETURNS rettype
      | RETURNS TABLE ( column_name column_type [, ...] ) ]
  { LANGUAGE lang_name
    | WINDOW
    | IMMUTABLE | STABLE | VOLATILE
    | CALLED ON NULL INPUT | RETURNS NULL ON NULL INPUT | STRICT
    | [ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER
    | COST execution_cost
    | ROWS result_rows
    | SET configuration_parameter { TO value | = value | FROM CURRENT }
    | AS 'definition'
    | AS 'obj_file', 'link_symbol'
  } ...
    [ WITH ( attribute [, ...] ) ]

你會在那里找到你的答案,並且也許會在這個過程中學到兩三件有用的東西。

您可能對RETURNS TABLE結構特別感興趣。

暫無
暫無

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

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