Re: PL/PGSQL + inserts+updates+limit - Postgres 9.3

Поиск
Список
Период
Сортировка
От Patrick Baker
Тема Re: PL/PGSQL + inserts+updates+limit - Postgres 9.3
Дата
Msg-id CAJNY3iu-h430JWpiz0xLxhtY0fEKtM_dQj3WXdXhFYw=Ny4vvA@mail.gmail.com
обсуждение исходный текст
Ответ на Re: PL/PGSQL + inserts+updates+limit - Postgres 9.3  (Patrick Baker <patrickbakerbr@gmail.com>)
Ответы Re: PL/PGSQL + inserts+updates+limit - Postgres 9.3  (Patrick Baker <patrickbakerbr@gmail.com>)
Список pgsql-general
I did:

CREATE or REPLACE FUNCTION function_1_data()
RETURNS INTEGER AS $$

declare
        row record;

BEGIN

-- copying the data to the backup table (not the blobs)
FOR row IN EXECUTE '
            SELECT
                    t1.file_id
            FROM
                    table1_n_b t1
            JOIN
                    table3_n_b t3 ON t3.file_id = t1. file_id ORDER BY 1 LIMIT 3' LOOP

-- Creating the backup table with the essential data
EXECUTE '
INSERT INTO table2_y_b (note_id, size, file_id, full_path)
    (
            SELECT
                    t1.note_id,
                    t1.size,
                    t1.file_id,
                    t1.full_path
            FROM
                    table1_n_b t1
            JOIN
                    table3_n_b t3 ON t3.file_id = t1.file_id
    ) ';

-- copying the blobs to the table above
EXECUTE '
        UPDATE table2_y_b t2 SET data =
        (
            SELECT
                    o1.data
            FROM
                    original_table1_b o1
            JOIN
                    table3_n_b t3 ON t3.file_id = o1.file_id
            WHERE
                    t3.migrated = 0
            AND
                    t2.file_id = o1.file_id
        )
        WHERE t2.file_id = row.file_id ';
        
-- updating the migrated column from 0 to 1
EXECUTE '
        UPDATE
                table2_y_b t2
        SET
                migrated = 1
        WHERE
                t2.file_id = row.file_id
        AND
                migrated = 0 ';
                
-- setting the blob as null
EXECUTE '
        UPDATE
                original_table1_b o1
        SET
                data = NULL
        WHERE
                o1.file_id = row.file_id ';
END LOOP;

return row.file_id;

END

$$ language 'plpgsql';


And I'm getting the error:
missing FROM-clause entry for table "row"
WHERE t2.st_ino = row.st_ino

Why does that happen? 

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

Предыдущее
От: Sameer Kumar
Дата:
Сообщение: Re: WAL's listing in pg_xlog by some sql query
Следующее
От: Michael Paquier
Дата:
Сообщение: Re: WAL's listing in pg_xlog by some sql query