Обсуждение: using raise info to display array element
I am trying to print values of an array one by one, but it doesn't work.
For example, if i want to print entire array at once, it does work:
CREATE OR REPLACE FUNCTION "public"."test_func" () RETURNS integer AS
$body$
declare
i int;
v_arr integer[] = '{0, 1}';
begin
v_arr[1] := 5;
v_arr[2] := 7;
raise info 'entire array: %', v_arr;
return 0;
end
$body$
LANGUAGE 'plpgsql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER;
But then if I try this:
CREATE OR REPLACE FUNCTION "public"."test_func_new" () RETURNS integer AS
$body$
declare
i int;
v_arr integer[] = '{0, 1}';
begin
v_arr[1] := 5;
v_arr[2] := 7;
raise info '1st element: %', v_arr[1];
return 0;
end
$body$
LANGUAGE 'plpgsql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER;
.. and it doesn't compile.
Can someone help me? Thanks!
--
Regards,
Kiryl Mauryshchau
For example, if i want to print entire array at once, it does work:
CREATE OR REPLACE FUNCTION "public"."test_func" () RETURNS integer AS
$body$
declare
i int;
v_arr integer[] = '{0, 1}';
begin
v_arr[1] := 5;
v_arr[2] := 7;
raise info 'entire array: %', v_arr;
return 0;
end
$body$
LANGUAGE 'plpgsql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER;
But then if I try this:
CREATE OR REPLACE FUNCTION "public"."test_func_new" () RETURNS integer AS
$body$
declare
i int;
v_arr integer[] = '{0, 1}';
begin
v_arr[1] := 5;
v_arr[2] := 7;
raise info '1st element: %', v_arr[1];
return 0;
end
$body$
LANGUAGE 'plpgsql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER;
.. and it doesn't compile.
Can someone help me? Thanks!
--
Regards,
Kiryl Mauryshchau
Hello It working on my 9.1. postgres=# select "public"."test_func_new" (); INFO: 1st element: 5 test_func_new ─────────────── 0 (1 row) can you send more info about your environment? Regards Pavel Stehule 2011/8/5 Kiryl Mauryshchau <kirylm@gmail.com>: > I am trying to print values of an array one by one, but it doesn't work. > > For example, if i want to print entire array at once, it does work: > > CREATE OR REPLACE FUNCTION "public"."test_func" () RETURNS integer AS > $body$ > declare > i int; > v_arr integer[] = '{0, 1}'; > begin > > v_arr[1] := 5; > v_arr[2] := 7; > > raise info 'entire array: %', v_arr; > > return 0; > > end > $body$ > LANGUAGE 'plpgsql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER; > > But then if I try this: > > CREATE OR REPLACE FUNCTION "public"."test_func_new" () RETURNS integer AS > $body$ > declare > i int; > v_arr integer[] = '{0, 1}'; > begin > > v_arr[1] := 5; > v_arr[2] := 7; > > raise info '1st element: %', v_arr[1]; > > return 0; > > end > $body$ > LANGUAGE 'plpgsql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER; > > .. and it doesn't compile. > > Can someone help me? Thanks! > > -- > Regards, > Kiryl Mauryshchau >