Postgresql assegnare una query di selezione per variabile in funzione

Sto usando Postgresql 9.3 e ha scritto una funzione come di seguito:

    create or replace function test(building text,floor text) returns void as $$
    Declare
    id integer;
    num integer := 0;
    Begin

    num=num+100

    id :=select to_number(
          (select 
              (select code from buildings where name=building) || floor 
              || (select num::text)),'99999999'
    );

    update table set col1=id;

    End;
    $$
    language plpgsql;

Quello che mi aspetto è che il mio id variabile viene assegnato un valore numerico example: 12502100 dal select to_number(...) query.

Tuttavia ho avuto il seguente errore

ERROR:  syntax error at or near ":="
LINE 10: source :=(select code from buildings where name='I3')

Come posso assegnare il risultato della query (con alcune operazioni di stringa) nella variabile id?

Anche io sono riuscito con Select Into id... metodo.

OriginaleL’autore Xianlin | 2013-10-09

One Reply
  1. 2

    Non avete bisogno di utilizzare SELECT per la valutazione della funzione.

    id := to_number((SELECT code FROM buildings WHERE name = building) 
                                                          || floor || num::text,
                    '999999999');

    altre possibilità (e di solito è meglio) utilizza la funzione di espressione elenco (risultato campo di elenco)

    id := (SELECT to_number(code || floor || num::text, '99999999') 
              FROM buildings WHERE name = building)

    Utilizzare SELECT solo quando hai bisogno di una query per i dati, non per una variabile o funzione di valutazione!

    il 2 ° metodo mi dà errore ” parentesi non corrispondenti a o vicino a “)””, il 1 ° metodo di lavoro.
    ci dispiace, fisso, c’è stata una parentesi di più
    come si fa a farlo con più variabili e uno statment? cioè vuoi riempire var1 e var2 (SELECT campo1, campo2 FROM edifici DOVE name = edificio); var1 deve contenere campo1 risultato e var2 dovrebbe avere campo2 risultato.
    Devi usare l’istruzione SELECT INTO per di più variabili

    OriginaleL’autore Pavel Stehule

Lascia un commento