Postgresql
返回 PostgreSQL 中儲存過程的值
我在PostgreSQL 教程上讀到這個:
如果要從儲存過程返回值,可以使用輸出參數。輸出參數的最終值將返回給呼叫者。
然後我在DZone發現了函式和儲存過程之間的區別:
儲存過程不返回值,但儲存函式返回單個值
誰能幫我解決這個問題。
如果我們可以從儲存過程中返回任何東西,也請讓我知道如何從
SELECT
正文中的語句中做到這一點。如果我在某處錯了,請告知。
您的兩個消息來源都是錯誤的。
A
FUNCTION
基本上總是返回一些東西。void
至少,單個值、一行或一組行(“set-returning function”,又名“table-function”) - 唯一不能返回任何內容的變體,即沒有行。從 plpgsql 程式碼中呼叫,如果你不想要結果,你必須主動關閉它們。看:A (Postgres 11 或更高版本)如果有任何帶有模式
PROCEDURE
的參數,則返回單行。INOUT
zsheep 已經提供了一個例子。考慮一個
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<>在這裡擺弄
有關的: