1
我是在postgresql中創建函數的新手。我使用的版本相當老舊。這是8.2.15(不是我的選擇,而是我的組織)。以下示例試圖將一個函數應用於另一個函數中的臨時表。將函數應用到另一個函數中的臨時表
-- First function
create or replace function inner_func(_tbl anyelement)
RETURNS void AS
$$
BEGIN
EXECUTE 'ALTER TABLE ' || _tbl || ' ADD COLUMN d_amount INTEGER';
EXECUTE 'UPDATE ' || _tbl || ' SET d_amount = 2* amount';
RETURN;
END;
$$
LANGUAGE plpgsql volatile;
-- Second function
CREATE OR REPLACE FUNCTION outer_func()
RETURNS void AS
$$
BEGIN
DROP TABLE IF EXISTS my_temp;
CREATE TEMP TABLE my_temp
(id serial primary key,
amount integer
);
INSERT into my_temp (amount) values (10),(20);
-- now apply the inner_func right here
EXECUTE 'SELECT inner_func(' || quote_ident('my_temp') || ')';
RETURN;
END;
LANGUAGE plpgsql volatile;
當我運行
SELECT outer_func();
它吐出一個錯誤:
column "my_temp" does not exist
但inner_func作品,如果我用它自身的類似如下:
create temp table my_temp2
(id serial primary key,
amount integer
);
INSERT INTO my_temp2 (amount) values (10),(20);
SELECT inner_func(quote_ident('my_temp2'));
SELECT * from my_temp2;
id amount d_amount
1 10 20
2 20 40
如何讓inner_func工作outer_func?任何想法?
感謝lad2025。它像一個魅力! – midtownguru
@midtownguru很高興聽到我可以幫助:) – lad2025