簡體   English   中英

如何在plpgsql中引用結果集

[英]How to reference a result set in plpgsql

在plpgsql過程中,我正在尋找如何引用和使用從第一個查詢中獲得的結果集。 以下代碼試圖演示我想要實現的目標:

do
$body$
DECLARE
  ref_result_set ???;
BEGIN

  ref_result_set :=  select 'asdf';

  perform xxx from ref_result_set;
  perform yyy from ref_result_set;

END;


$body$
language plpgsql;

我在看游標,但是只有一種選項可以逐行獲取,而不是整個集合。 有沒有其他選擇,而無需先寫入表又如何實現?

問的問題

plpgsql(或SQL)中沒有“表變量”。 您可以使用:

相關問題:
從表變量中選擇
返回節點所有子表的函數

實際問題

對於您的實際問題,我建議您修改數據的CTE

WITH sel AS (
   SELECT col1, col2, ..
   FROM   tbl1
   WHERE  <expensive condition>
   )
, ins1 AS (
   INSERT INTO test1 (col1, col2, ..)
   SELECT col1, col2, ..
   FROM   sel
   WHERE  <some condition>
   )
INSERT INTO test2 (col1, col2, ..)
SELECT col1, col2, ..
FROM   sel
WHERE  <some condition>;

您可以在plpgsql代碼內部使用該代碼,也可以將其用作獨立的SQL命令。
在plpgsql代碼內部,您可以在查詢中引用變量...

暫無
暫無

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

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