Postgresql

返回 PostgreSQL 中儲存過程的值

  • July 23, 2020

我在PostgreSQL 教程上讀到這個:

如果要從儲存過程返回值,可以使用輸出參數。輸出參數的最終值將返回給呼叫者。

然後我在DZone發現了函式和儲存過程之間的區別:

儲存過程不返回值,但儲存函式返回單個值

誰能幫我解決這個問題。

如果我們可以從儲存過程中返回任何東西,也請讓我知道如何從SELECT正文中的語句中做到這一點。

如果我在某處錯了,請告知。

您的兩個消息來源都是錯誤的。

  • AFUNCTION基本上總是返回一些東西。void至少,單個值、一行或一組行(“set-returning function”,又名“table-function”) - 唯一不能返回任何內容的變體,即沒有行。從 plpgsql 程式碼中呼叫,如果你不想要結果,你必須主動關閉它們。看:

  • A (Postgres 11 或更高版本)如果有任何帶有模式PROCEDURE的參數,則返回單行。INOUTzsheep 已經提供了一個例子

考慮一個DO語句來執行臨時 plpgsql 程式碼而不傳遞或返回任何內容。

要解決您的核心問題:

如果我們可以從儲存過程中返回任何東西,也請讓我知道如何從SELECT正文中的語句中做到這一點。

與函式中的方式相同,就像在一般 PL/pgSQL 領域中一樣:使用INTO關鍵字分配給參數:

CREATE PROCEDURE assign_demo(INOUT _val text DEFAULT null)
 LANGUAGE plpgsql AS
$proc$
BEGIN
  SELECT val FROM tbl WHERE id = 2
  INTO _val;                              -- !!!
END
$proc$;

db<>在這裡擺弄

有關的:

引用自:https://dba.stackexchange.com/questions/257596