Обсуждение: Тип record преобразовать в text[]
Возможно ли преобразовать значение типа record в массив text[]? Если можно, то как? -- [5005747] / [http://ego.b0b.org/about/] [11C607AC] / [5E2B 1445 912B 490A 5524 EA39 A36C 7E67 11C6 07AC]
В сообщении от 3 мая 2007 Alexey Kolosov написал(a): > Возможно ли преобразовать значение типа record в массив text[]? > Если можно, то как? на plsql нельзя... зато на plperl или plpython можно! просто никогда не писал на них ХП! помогите пожалуйста! -- [5005747] / [http://ego.b0b.org/about/] [11C607AC] / [5E2B 1445 912B 490A 5524 EA39 A36C 7E67 11C6 07AC]
> > Возможно ли преобразовать значение типа record в массив text[]? > > Если можно, то как? > на plsql нельзя... зато на plperl или plpython можно! просто никогда не писал > на них ХП! помогите пожалуйста! Ну раз знаешь что можно, так кидай сюда то чего не получилось, будет помощь. Примеры как писать на перле вполне для начала подходящий на http://www.postgresql.org/docs/8.1/interactive/plperl.html. Я сам как-то спробовал - влегкую получилось все что там и чуток поэкспериментировал. -- engineer
В сообщении от 3 мая 2007 Alexey Kolosov написал(a):
> Возможно ли преобразовать значение типа record в массив text[]?
> Если можно, то как?
в общем вот результат на plperl:
CREATE OR REPLACE
FUNCTION "mammoth"."get_field_values_by_muid_and_mcid_as_set" (p_table text,
p_fields text, p_muid bigint, p_mcid integer) RETURNS SETOF text AS
$body$
my $v_query = spi_query("select $_[1] from $_[0] where muid = $_[2] and mcid =
$_[3] limit 1;");
my $v_row = spi_fetchrow($v_query);
if (defined($v_row)) {
foreach my $v_field (split(/\, /, $_[1])) {
return_next($v_row->{$v_field});
}
}
return undef;
$body$
LANGUAGE 'plperl' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER;
сильно не ругайте - первая ХП на plperl :)
--
[5005747] / [http://ego.b0b.org/about/]
[11C607AC] / [5E2B 1445 912B 490A 5524 EA39 A36C 7E67 11C6 07AC]