0
我在下面的plpsql中遇到了問題。我所試圖做的是:帶子查詢和動態SQL的PostgreSQL plpgsql
- 我有一個表
name
用別人的名字 - 我想寫一個PostgreSQL功能拷貝非空列從一個人到另一個人(如較大部分合並)
name
表中有許多列和其他我想要做同樣事情的表。- 爲了限制的需要編寫的代碼量,我試圖通過數組迭代,並生成動態SQL
但是我不能得到這個工作。
我至今是:
CREATE OR REPLACE FUNCTION test(first_id bigint, second_id bigint) RETURNS boolean AS $$
DECLARE
first_name name%ROWTYPE;
second_name name%ROWTYPE;
col_name VARCHAR(100);
sql_block VARCHAR(500);
BEGIN
SELECT * INTO first_name FROM name WHERE person_id = first_id;
SELECT * INTO second_name FROM name WHERE person_id = second_id;
FOREACH col_name IN ARRAY ARRAY['column1', 'column2', 'column3', 'column4']
LOOP
---- The follow line is not working and keeps giving a syntax error
EXECUTE 'if (first_name .' || col_name || ' IS NULL and second_name.' ||
col_name || ' IS NOT NULL) THEN UPDATE name set ' || col_name ||
' = second_name.' || col_name || ' where name.id = first_name.id; END IF;';
END LOOP;
RETURN TRUE;
END;
$$ LANGUAGE plpgsql;
這工作非常出色。謝謝。我唯一的問題是,我不能讓USING工作,但不得不將字符串串聯到頁腳查詢中 – Ask613