Názor ke článku PostgreSQL: PL/pgSQL – Serverové programování 01 od anonym - Zde příklad konfliktu proměnných. Úplně na konci je...

  • 11. 11. 2016 4:03

    bez přezdívky

    Zde příklad konfliktu proměnných. Úplně na konci je příklad konfliktů názvů, který projde.

    create table test2
    (id integer primary key,
    slovo text);

    insert into test2 values (100,'test');

    create function test2_update(slovo text)
    returns void
    as
    $body$
    begin
    update test2
    set slovo=slovo;
    end;
    $body$
    LANGUAGE plpgsql;

    select test2_update('jde se na to');

    Výsledek:

    ERROR: nejednoznačný odkaz na sloupec "slovo"
    LINE 2: set slovo=slovo
    ^
    DETAIL: Identifikátor může odkazovat na proměnnou PL/pgSQL nebo na sloupec v tabulce.
    QUERY: update test2
    set slovo=slovo
    CONTEXT: PL/pgSQL funkce test2_update(text) řádek 3 na SQL příkaz

    ********** Chyba **********

    ERROR: nejednoznačný odkaz na sloupec "slovo"
    Stav SQL: 42702
    Podrobnosti:I­dentifikátor může odkazovat na proměnnou PL/pgSQL nebo na sloupec v tabulce.
    Kontext:PL/pgSQL funkce test2_update(text) řádek 3 na SQL příkaz

    ALE !!!

    create function test2_update2(slo­vo1 text)
    returns void
    as
    $body$
    declare
    slovo1 text default 'ahoj';
    begin
    update test2
    set slovo=slovo1;
    end;
    $body$
    LANGUAGE plpgsql;

    select test2_update2('jde se na to'); -- PROJDE

    vysledek :
    select * from test2;

    100;"ahoj" -- Coz je zmatecne