tCL-nextval для последовательности - PullRequest
0 голосов
/ 31 октября 2018

POSTGRESQL 9.2.24.- pltcl

Казалось бы, довольно прямолинейный поступок. Я пытаюсь сделать эквивалент (в plpgsql) v_skill_integer = nextval (v_seq_name);

в результате ....

ОШИБКА: неверное имя команды "db_nextval" КОНТЕКСТ: неверное имя команды "db_nextval" во время выполнения "db_nextval $ seq_name" (процедура "__PLTcl_proc_1645839" строка 8) вызывается изнутри "__PLTcl_proc_1645839 аа" в PL / Tcl функция "skm__tcl_set_skill_id"

DROP FUNCTION IF EXISTS skm__tcl_set_skill_Id(CHAR(03));

CREATE OR REPLACE FUNCTION skm__tcl_set_skill_Id(CHAR(03))
     RETURNS CHAR(08) AS $BODY$

   set skill_prefix [string tolower $1]
   append seq_name "skm_" $skill_prefix
   set v_length [string length $skill_prefix]

   set skill_integer [db_nextval $seq_name]


   return $seq_name$length
$BODY$  LANGUAGE pltcl;

select skm__tcl_set_skill_Id('aa');

Будет ли это потому, что последовательность еще не создана, и если да, то как мне ее поймать? Если не то, то ??

Я думаю, что это экологическая вещь, потому что когда я использую пут, я получаю ошибку ОШИБКА: не удается найти канал с именем "stdout" КОНТЕКСТ: не могу найти канал с именем "stdout" во время выполнения "ставит $ seq_name"

...