2012-10-05 60 views
0

我有一個使用整數[]作爲輸入的plpgsql函數。確定輸入數組的大小plpgsql

整個安裝可以在這個問題上找到: Passing a record as function argument PL/pgSQL

短版: 我正從書本米關係作者與被稱爲books_author一個鏈接表。我現在有一個看起來像這樣的功能:

create function f_insert_books(title varchar, isbn varchar, publisher varchar, 
     author_id integer[]) returns void as $$ 
     begin 
     --insert book 
     --insert link to authors into the books_author table 
     end; 
    $$ language plpgsql; 

我現在想將number_of_authors添加到書中。有沒有簡單的方法來確定author_id數組的大小,或者你會推薦傳遞「number_of_authors int」作爲輸入參數嗎?

我發現了這個建議,但是我對這種方法的性能有點擔心。所以也許有更容易/更快的事情。 http://archives.postgresql.org/pgsql-sql/2000-06/msg00169.php

非常感謝您的幫助。

回答

6

使用array_length

SELECT array_length(ARRAY[1,2,3], 1); 

的第二個參數是你感興趣的維度大多數陣列是一維的,所以1是在大多數情況下,正確的價值。

如果你其實找所有字符串在text數組的長度,使用array_to_stringlength

SELECT length(array_to_string(ARRAY['a','bb','ccc'], ''));                           

順便說一句,你鏈接到文章是12歲,似乎完全過時。

+0

噢是的,完全沒有看到它是這麼舊 – taranaki