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 по дате отправления: