Re: [SQL ] 關於 postgresql stored procedure 的問題
自問自答
原來是我想錯了... mapno 是一樣的,所以我就用以下的方法
1 CREATE FUNCTION updatenf2() RETURNS void AS $$
2 DECLARE
3 tsuga_ba double precision;
4 mapno_id bigint;
5
6 BEGIN
7 FOR tsuga_ba,mapno_id in SELECT log(ba) AS ba,mapno FROM nf_sample_tsuga WHERE ba!=0 LOOP
8 UPDATE nf_releve SET ba=tsuga_ba WHERE nf_releve.mapno=mapno_id;
9 END LOOP;
10 END;
11
12 $$ LANGUAGE plpgsql;
謝謝
※ 引述《psilotum (好小孩)》之銘言:
: 大家好,以下有一個問題想要請教一下
: 1. DBMS 環境:
: psql (PostgreSQL) 8.3.3
: contains support for command-line editing
: 2. 想法:
: Table 1 (其中,~ 為一些欄位,除了 ba 之外,所有欄位都有資料)
: mapno tsuga ba
: -------+ ~ +-----+-----------------
: bigint int double precision
: Table 2
: mapno ba
: -------+ ~ +-----------------+
: bigint double precision
: 我想做的事情是,如果 Table 1 中 tsuga 的欄位是某個特定值,例如說 1 好了
: 就把 Table 2 中的 ba 值進行 log 計算後複製到 Table 1 中的 ba 欄位
: 3. 我的作法
: 1 CREATE FUNCTION updatenf2() RETURNS void AS $$
: 2 DECLARE
: 3 tsuga_ba double precision;
: 4
: 5 BEGIN
: 6 FOR tsuga_ba in SELECT log(ba) as ba from nf_sample_tsuga WHERE ba!=0 LOOP
: 7 UPDATE nf_releve SET ba=tsuga_ba WHERE tsuga=1;
: 8 END LOOP;
: 9 END;
: 10
: 11 $$ LANGUAGE plpgsql;
: 接下來 select updatenf2()
: 不過很奇怪的是,它似乎在 ba 欄位中的數字都一模一樣,看了很久不知道問題在哪邊
: mapno | ~ | tsuga | ba
: -------------+----+-------+----
: 95192108140 | ~ | 1 | 3.17974616415469
: 95192109015 | ~ | 1 | 3.17974616415469
: 95192113035 | ~ | 1 | 3.17974616415469
: 95192113041 | ~ | 1 | 3.17974616415469
: 95192113167 | ~ | 1 | 3.17974616415469
: 謝謝!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.82.16
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):