postgres函式(雙重迴圈)

2021-08-09 04:03:50 字數 1392 閱讀 3062

先看基本的語法:

namecreate function

create [ or replace ] function

name( [ [argmode] [argname]argtype[ default_expr] [, ...] ] )

[ returnsrettype

| returns table (column_namecolumn_type[, ...] ) ]

| as 'definition'

| as 'obj_file', 'link_symbol'

} ...

[ with (attribute[, ...] ) ]

給乙個參考鏈結函式語法詳細說明

但是我看了這個語法之後有點一頭霧水,畢竟定義裡的東西比較全面,很多用不到。所以寫乙個簡單的理解和小例子來解釋一下。

首先說明我的需求:我希望將某乙個點的橫縱座標逐漸遞加使之變為覆蓋乙個區域的座標集合,同時將這些經緯度插入到資料庫。比如說從(0,0)開始,以0.1遞加到(1,1)。顯然這是乙個雙重迴圈,先x方向遞加,到達界值y加上乙個精度值,再接著迴圈。

create or replace function createdata (maxnum integer) 

returns void as $body$

declare longtude float ;

declare latitude float ;

declare i integer ;

declare j integer ;

begin

j := 0 ;

i := 0 ;

for i in

0..10

loop

j = 0 ;

for j in

0..20

loop

maxnum = maxnum + 1 ;

insert into mytablename (

"x",

"y",

"id"

)values(x,

y,maxnum,

) ;x= x+ 0.2 ;

endloop ;

x= 110.0 ;

y=y+0.2;

endloop ;

end ;

$body$ language plpgsql;

select

createdata (1929)

邏輯是不是很簡單。有幾個點需要稍微注意下:

(1)定義的變數使用時不需要引號,直接使用就可以;

(2)建立好的函式可以在資料庫裡的函式中檢視。

(3)本來覺的挺難的,結果一寫又覺得好簡單~果然實踐是最好課堂

雙重for迴圈

雙重for迴圈就是在乙個for迴圈裡在巢狀另乙個for迴圈,ji 即兩個迴圈巢狀,還有多重迴圈巢狀的情況,但用的比較少,一般常用的是兩個迴圈巢狀,很少使用多重迴圈,因為for迴圈多了會導致 執行的效率低,而且容易宕機,多迴圈中的總迴圈次數是相乘的,巢狀幾次後幾何級數增長,因此通常情況下在迴圈多次巢狀...

雙重for迴圈

雙重for迴圈 1 概述 很多情況下,單層for迴圈並不能滿足我們的需求,比如我們要列印乙個5行5列的圖形,列印乙個倒直角三角形等,此時就可以通過迴圈巢狀來實現 迴圈巢狀是指在乙個迴圈語句中再定義乙個迴圈語句的語法結構,例如在for迴圈語句中,可以再巢狀乙個for迴圈,這樣的for迴圈語句我們稱之為...

雙重遍歷迴圈

如果需要用二維 形式表達的內容,就需要用雙重迴圈。外層的i表示行,內層的j表示有多少列。注意迴圈條件的控制,特別是內層迴圈的條件是難點。典型例題就是99乘法表的列印。1 1 1 1 2 2 2 2 4 1 3 3 2 3 6 3 3 9 1 4 4 2 4 8 3 4 12 4 4 16 1 5 5...