plpgSql에서 빈 숫자 배열에 숫자를 추가해야합니다.이 빈 숫자 배열은 가변적입니다.빈 배열에 요소를 추가하십시오.
DECLARE
new_arr INTEGER[];
BEGIN
SELECT array_append(new_arr, 4) INTO new_arr;
이 작동하지만, 나는 확실하지 않다,있을 수 있습니다이 더 나은 방법이 존재합니다
내가 뭘하면이 무엇입니까?
plpgSql에서 빈 숫자 배열에 숫자를 추가해야합니다.이 빈 숫자 배열은 가변적입니다.빈 배열에 요소를 추가하십시오.
DECLARE
new_arr INTEGER[];
BEGIN
SELECT array_append(new_arr, 4) INTO new_arr;
이 작동하지만, 나는 확실하지 않다,있을 수 있습니다이 더 나은 방법이 존재합니다
내가 뭘하면이 무엇입니까?
당신은 그것을 할 수 있지만,이 스타일은 조금 애매한
를 사용하여 A 할당 문입니다,하지만 당신은이 올바른 초기화를 잊지 필요가 없습니다. 귀하의 예제에서 new_arr은 빈 배열을 보유하지 않습니다. 그것은 NULL을 보유합니다. 수행 : 당신이 어떤 관계를 조회 할 경우
DECLARE new_arr int[] DEFAULT '{}';
BEGIN
new_arr := new_arr || 4;
-- or
new_arr := array_append(new_arr, 4);
-- both are equal
SELECT INTO
가 사용되어야한다.
답변 주셔서 감사합니다 – RIKI
이 답변으로 뭔가 이상한 것 같지 않습니다. 9.5.1에서,'RAISE NOTICE '배열 %은 길이가 %, new_arr, array_length (new_arr, 1);'prints'배열 {}은 길이가
할당 전에 'ASSERT new_arr IS NULL;'은 array_length()가 생각하는 것에도 불구하고 null이 아님을 의미합니다. – Neil
'new_arr : = new_arr || 4 '는 아마 빠릅니다. http://adpgtech.blogspot.de/2014/11/assignment-beats-select-into.html –
@ a_horse_with_no_name 감사합니다. – RIKI
@a_horse_with_no_name : 아니요,이 경우는 같습니다. plpgsql 소스 코드를 찾습니다. Andrew의 측정은 정확하지만 조사가 잘못되었으며 의견도 나와 있습니다. 중요한 것 - 결과에 얼마나 많은 열이 있는지 - plpgsql은 실행 프로그램을 직접 호출 할 때, 더 많이 사용하면 SPI가 사용됩니다 (속도가 느림). –