LINUX.ORG.RU

тупилово


0

0

В девелопменте нет никто, поэтому пишу сюда.

Сваял функцию для постгреса. Вроде все правильно, а все равно ошибку выдает.

CREATE OR REPLACE FUNCTION zone_import (i_begins int, i_ends int, i_code char(2), i_country varchar(255), i_region varchar(255), i_city varchar(255)) RETURNS int AS $$
DECLARE
	country_id int;
	region_id int;
	city_id int;
BEGIN
	SELECT id FROM countries INTO country_id WHERE code=i_code;
	IF country_id IS NULL THEN
		INSERT INTO countries (name, code) VALUES (i_country, i_code);
		country_id := currval(countries_id_seq);
	END IF;

	SELECT id FROM regions INTO region_id WHERE name=i_region;
	IF region_id IS NULL THEN
		INSERT INTO regions (country_id, name) VALUES (country_id, i_region);
		region_id := currval(regions_id_seq);
	END IF;

	SELECT id FROM cities INTO city_id WHERE name=i_city;
	IF city_id IS NULL THEN
		INSERT INTO cities (region_id, name) VALUES (region_id, i_city);
		city_id := currval(cities_id_seq);
	END IF;

	INSERT INTO zones (begins, ends, city_id) VALUES (i_begins, i_ends, city_id);

	RETURN 1;
END; $$
LANGUAGE plpgsql;

Текст ошибки:

ERROR:  ошибка синтаксиса в или рядом "$1"
LINE 1: INSERT INTO regions ( $1 , name) VALUES ( $1 ,  $2 )
                              ^
QUERY:  INSERT INTO regions ( $1 , name) VALUES ( $1 ,  $2 )
CONTEXT:  SQL statement in PL/PgSQL function "zone_import" near line 14

Нифиво не понимаю (ц). Мож вы подскажете, где косяк?


Перемещено JB из Talks
★★★

Re: тупилово

>INSERT INTO cities (region_id, name) VALUES (region_id, i_city);

у тебя region_id и в имени поля встречается и идет параметром

та же ошибка у тебя будет на строке

>INSERT INTO regions (country_id, name) VALUES (country_id, i_region);

Deleted ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.