我正在寫一個函數執行以下操作:PostgreSQL的功能 - 執行「創建表......」 - 意外的結果
與單個字段創建一個臨時表。 該字段是特定表格中多達5個變量之和的結果。
比方說,我有如下表:
create table src (x1 numeric, x2 numeric);
insert into src values (2,1),(5,2),(10,4);
我的代碼是:
create or replace function qwert(cod numeric, v1 numeric default 0
, v2 numeric default 0, v3 numeric default 0, v4 numeric default 0,
v5 numeric default 0)
returns numeric as
$func$
declare vv numeric;
begin
vv = v1+v2+v3+v4+v5;
execute '
drop table if exists t' || cod || ';
create temporary table t' || cod || ' as
select ' || vv || ' ;'
;
return vv;
end
$func$ language plpgsql;
如果我運行:從SRC 選擇QWERT(1,X1,X2);
預期的結果是一個表t1:
column1
---------
3
7
14
(3 rows)
相反,結果是:
db1=# select * from t1;
?column?
----------
14
(1 row)
在我的代碼,行: 回報VV; 僅用於檢查vv是否正確創建。
有人可以幫助你嗎?
對不起。我編輯了這個問題。希望現在清楚。 – Ali
你需要什麼臨時表?或者,這只是一個(失敗)嘗試從函數中獲取一組行嗎?另外,你的問題仍然沒有加起來。你想從表'src'中總結'x1 + x2'嗎? –
我需要一個臨時表來存儲我需要用於進一步計算的新變量。在每個會話中,我的輸入變量可能會改變我想總結五列,因此我將默認值設置爲零。作爲一個例子,我只是想總結兩列(來自src的x1和x2)。結果表應該有x1 + x2(3,7,14)。很抱歉。我的查詢應該是:從src中選擇qwert(1,x1,x2); (因此,我認爲...) – Ali