Re: What's wrong in this pltcl function ?

Поиск
Список
Период
Сортировка
От Constantin Teodorescu
Тема Re: What's wrong in this pltcl function ?
Дата
Msg-id 3DAAD536.8030603@flex.ro
обсуждение исходный текст
Ответ на What's wrong in this pltcl function ?  (Constantin Teodorescu <teo@flex.ro>)
Ответы Re: What's wrong in this pltcl function ?  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-interfaces
Tom Lane wrote:

>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.
>  
>

I have replaced:
... where id=\'\\$1\'     with
... where id=\\$1

and the error is now:
ERROR:  Unable to identify an operator '=$' for types 'character 
varying' and 'integer'       You will have to retype this query using an explicit cast

when I call the function like that:

select ruldeb('4:0:1:1:2:');

-------------
I have to say that that account '4:0:1:1:2:' exists in the "conturi" table!
As I said it previously, the query works fine directly (spi_exec) 
without the preparing stuff!

teo




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

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