Re: [SQL ] 關於 postgresql stored procedure 的問題

看板Database作者 (好小孩)時間15年前 (2008/11/19 17:54), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/2 (看更多)
自問自答 原來是我想錯了... 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
文章代碼(AID): #198-9nyZ (Database)
文章代碼(AID): #198-9nyZ (Database)