Подскажите люди, как можно объявлять и использовать переменные в Postgres!

Alexey8000
Дата: 12.08.2004 00:28:46
так ругается, но тут слышал что можно в plsql это делать, правда не совсем понял как грамотно это тестить это, т.к. использую обычную форму из PGAdmin для проверки и составления запросов, а там я не понимаю как и что с переменными. что то туго у меня с пониманием сего.
Обьясните плиз на пальцах это! просто нужны мне переменные чтоб составить запрос, а тут не получается в принципе их завести!

Заранее благодарен!
Кувалдин Роман
Дата: 12.08.2004 11:46:13
Насколько я знаю, переменные можно использовать только внутри хранимых процедур.

Читать здесь:

http://www.postgresql.org/docs/7.4/interactive/plpgsql.html

Русского руководства программиста я уже давно не встречал.

Если читать лениво - то вот конкретно:

как надо:

name [ CONSTANT ] type [ NOT NULL ] [ { DEFAULT | := } expression ];

примеры:
user_id integer;
quantity numeric(5);
url varchar;
myrow tablename%ROWTYPE;
myfield tablename.columnname%TYPE;
arow RECORD;

И вот тебе хранимая процедура постгреса:
CREATE FUNCTION somefunc() RETURNS integer AS
'
DECLARE
    quantity integer := 30;
BEGIN
    -- Quantity here is 30
    RAISE NOTICE ''Quantity here is %'', quantity;
    
    quantity := 50;
    -- Create a subblock
    DECLARE
        quantity integer := 80;
    BEGIN
        -- Quantity here is 80
        RAISE NOTICE ''Quantity here is %'', quantity;  
    END;
    -- Quantity here is 50
    RAISE NOTICE ''Quantity here is %'', quantity;  
    RETURN quantity;
END;
'
LANGUAGE plpgsql;

не забудь только для своей базы поддержку plpgsql включить. Это делается в консоли (! не внутри psql !)

createlang plpgsql <имя_базы>

А также советую прочитать это:
http://www.postgresql.org/docs/7.4/interactive/server-programming.html

Надеюсь, что помог.
Alexey8000
Дата: 12.08.2004 18:48:29
Спасибо! Просто я понял что здесь это не просто...
eddie
Дата: 12.08.2004 20:03:59
да всё просто - в пределах функции могут быть локальные переменные, как именно ими пользоаться зависит от языка этой функции.

"просто так" (то бишь вне функции) переменных вроде как нет