2012-10-05 6 views
0

입력으로 정수 []를 사용하는 plpgsql 함수가 있습니다. 입력 배열의 크기 결정 plpgsql

전체 설치

이 질문에서 찾을 수 있습니다 Passing a record as function argument PL/pgSQL

짧은 버전 : 나는 books_author라는 링크 테이블 저자로 책에서 m 관계에 N 있습니다. 이제 다음과 같은 함수가 있습니다.

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); 

제 2 매개 변수는 관심있는 치수 대부분의 배열은 그래서 하나 대부분의 경우 올바른 값으로, 1 차원입니다. 당신이 text 배열의 모든 문자열의 길이를 찾고 사실이라면

, lengtharray_to_string를 사용

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

BTW, 당신이 링크 된 문서는 12 세이며, 완전히 쓸모가 나타납니다 .

+0

맞아, 맞아,이게 옛날인지 몰랐어. – taranaki