Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Ошибка array value must start with "{" / 4 сообщений из 4, страница 1 из 1
09.10.2007, 11:50
    #34856228
Casufi
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка array value must start with "{"
Есть таблица

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
CREATE TABLE reg_dvizh
(
  id serial NOT NULL,
  id_doc integer,
  str smallint,
  fl smallint,
  id_podr integer,
  id_tov integer,
  kol numeric( 12 , 3 ),
  sum numeric( 19 , 2 ),
  id_val integer,
  obj_doc character( 13 ),
  CONSTRAINT pk_reg_dvizh PRIMARY KEY (id),
  CONSTRAINT fk_reg_dvizh_doc FOREIGN KEY (id_doc)
      REFERENCES doc (id) MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE NO ACTION,
  CONSTRAINT fk_reg_dvizh_podr FOREIGN KEY (id_podr)
      REFERENCES podr (id) MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE NO ACTION,
  CONSTRAINT fk_reg_dvizh_tov FOREIGN KEY (id_tov)
      REFERENCES tov (id) MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE NO ACTION,
  CONSTRAINT fk_reg_dvizh_val FOREIGN KEY (id_val)
      REFERENCES val (id) MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE NO ACTION,
  CONSTRAINT ck_reg_dvizh CHECK (fl =  1  OR fl = - 1 )
) 

Есть простая функция

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
-- Function: get_id_dvizh(nbuf integer)

-- DROP FUNCTION get_id_dvizh(nbuf integer);

CREATE OR REPLACE FUNCTION get_id_dvizh(nbuf integer)
  RETURNS bigint[] AS
$BODY$
DECLARE 			
	docid integer;    

BEGIN
INSERT INTO reg_dvizh(id_doc, str, fl, id_podr, id_tov, kol, sum, id_val, obj_doc) VALUES ( 28 ,  1 ,  1 ,  29 ,  28 ,  100 . 000 ,  1000 . 00 ,  29 , '');
return  23 ;		
--    return currval('reg_dvizh_id_seq');
 
	END;
$BODY$
  LANGUAGE 'plpgsql' VOLATILE;
ALTER FUNCTION get_id_dvizh(nbuf integer) OWNER TO pgadmin;

если прописываю return Null; то функция работает и данніе инсертятся
А если прописываю return 23; или return currval('reg_dvizh_id_seq'); то ругается

автор
ERROR: array value must start with "{" or dimension information
SQL state: 22P02
Context: PL/pgSQL function "get_id_dvizh" while casting return value to function's return type
...
Рейтинг: 0 / 0
09.10.2007, 11:56
    #34856253
pamir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка array value must start with "{"
Ну дык, у тебя что должно возвращаться из функции? Массив. А ты что возвращаешь? Число.
...
Рейтинг: 0 / 0
09.10.2007, 12:00
    #34856283
v0v4ik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка array value must start with "{"
А что вы хотели? У вас же функция должна возвращать массив. Если надо число то пишите
"returns bigint". Если все же массив то создавайте массив конструктором (смотри доку).
...
Рейтинг: 0 / 0
09.10.2007, 12:04
    #34856302
Casufi
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка array value must start with "{"
упс, опозорился.

Спасибо!
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Ошибка array value must start with "{" / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]