Re: What's wrong in this pltcl function ?

Поиск
Список
Период
Сортировка
От Tom Lane
Тема Re: What's wrong in this pltcl function ?
Дата
Msg-id 12147.1034605407@sss.pgh.pa.us
обсуждение исходный текст
Ответ на What's wrong in this pltcl function ?  (Constantin Teodorescu <teo@flex.ro>)
Список pgsql-interfaces
Constantin Teodorescu <teo@flex.ro> writes:
> create function ruldeb(bpchar) returns bpchar as '
>     set cont $1
>     set rulaj 0.0
>     spi_exec -array rec "select valoare from valori where debitor LIKE 
> \'$cont%\'" {
>         set rulaj [expr {$rulaj + $rec(valoare)}]
>     }
>     if {![info exists GD(conturi_lookup)]} {
>         set GD(conturi_lookup) [spi_prepare "select cheie,denumire from 
> conturi where id=\'\\$1\'" [list bpchar]]
>     }
>     spi_execp -count 1 $GD(conturi_lookup) [list $cont]
>     return "{$cheie} {$denumire} $rulaj"
> ' LANGUAGE 'pltcl';


> is giving the following error:

> ERROR:  pltcl: can't read "cheie": no such variable
> can't read "cheie": no such variable

I think what is happening is that the select is returning zero rows, and
so none of the output variables get set.  You should be checking that
spi_execp returns a value greater than 0 before trying to use the column
variables.

As for *why* the select returns zero rows, I think you want the query
to read like... where id=\\$1"
As is, it's always looking for the literal id value $1.
        regards, tom lane


В списке pgsql-interfaces по дате отправления:

Предыдущее
От: Constantin Teodorescu
Дата:
Сообщение: Re: What's wrong in this pltcl function?
Следующее
От: Constantin Teodorescu
Дата:
Сообщение: Re: What's wrong in this pltcl function ?