[英]PostgreSQL combine multiple EXECUTE statements
我有一個PREPARE語句,使用EXECUTE會多次調用它。 為了節省數據庫連接成本,我們進行了一個大查詢,例如:
PREPARE updreturn as update myTable set col1 = 1 where col2= $1 returning col3;
EXECUTE updreturn(1);
EXECUTE updreturn(2);
....
EXECUTE updreturn(10);
並發送到數據庫。 但是,我只得到最后一個EXECUTE語句的結果。
有沒有辦法將這些結果存儲在臨時表中並獲取所有結果?
我認為您需要為此提供一些技巧。
result
表以存儲結果 myTable
之前創建trigger
INSERT INTO result VALUES(col3)
因此,每次myTable
行更新時,也會在result
插入一個值
您可以使用事務和臨時表。 並執行3個查詢:
查詢1:啟動事務( 我不知道您使用什么來連接數據庫 )。
查詢2:
-- Create a Temporary Table to store the returned values
CREATE TEMPORARY TABLE temp_return (
col3 text
) ON COMMIT DROP;
-- Prepare the Statement
PREPARE updreturn AS
WITH u AS (
UPDATE myTable SET col1 = 1 WHERE col2= $1 RETURNING col3
)
INSERT INTO temp_return (col3) SELECT col3 FROM u;
EXECUTE updreturn(1);
EXECUTE updreturn(2);
.....
EXECUTE updreturn(10);
-- Deallocate the Statement
DEALLOCATE updreturn;
-- Actually return the results
SELECT * FROM temp_return;
查詢3:提交事務( 請參閱查詢1的注釋 )
沒有關於您的完整方案的任何其他詳細信息,我無法告訴您更多信息,但是您應該明白這一點。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.