динамический запрос, + вставка NULL, + возврат ИД последней записи

Legushka
Дата: 21.11.2014 08:01:01
видел решения для создания динамического запроса, видел для возврата ИД, но не могу объеденить в один запрос

execute 'insert into ' || shematbl || '.tablica1 (pole1integer,pole2data, pole3stroka,) values (' || ? Pole1 ? || ', ' || ? Pole2 ? || ', ' || ? Pole3 ? || ') ?  ?
, там где вопросики я незнаю еще как.
еще проблема в том что число Pole1, дата Pole2, строка Pole3 могуть быть NULL, тогда при конкатенации строк в execute попадет NULL

помогите пожалуйста сделать что бы Pole2 и Pole3 если равно NULL то в запросе вставлялся текст NULL иначе значение взятое в ' ' ?
и как все это еще и returning id as id_?
/\/\/\/\/\/\
Дата: 21.11.2014 09:34:11
Legushka,

Прочитайте RTFM. Там все есть.
Legushka
Дата: 21.11.2014 10:20:17
/\/\/\/\/\/\ спасибо-)
с нуллами разобрался)
остался вопрос как из execute 'insert () values ()'
в переменную id_ положить returning id?
Legushka
Дата: 21.11.2014 12:09:13
не получается в запрос впихнуть returning:
запись вставляется с учетом NULL, но нет возврата ИД

...
create or replace function ...

...
execute 'INSERT  INTO '|| strsh ||'. table  (
	pole1, 
	pole2, 
	pole3
	)
    VALUES(
	  ' || Quote_nullable(Perem1) || ',
	  ' || Quote_nullable(Perem2) || ',
	  ' || Quote_nullable(Perem3) || ') ';
-- тут надо передать в id_1 ид последней записи
return id_1;

подскажите
я поиском весь РТФМ перерыл не могу найти то что мне надо(
Legushka
Дата: 21.11.2014 12:24:29
открыл глаза по шире
returning прекрасно работает) я ошибся в реальном случае с названием колонки где хранится ИД
действительно возвращается ИД той записи которая вставилась)


но всплыл совершенно новый момент и очень не приятный:

в таблицу до меня еще были закачены данные, не знаю кто и как закачивал, но в этой таблице последнее ИД уже дошло за пару тысяч, а начинается пулл с 500 (скорее всего таблицу заливали вручную)

а моя запись вставляется с ИД=15, 16, 17 и тд, и такими темпами скоро дойдет до тех записей которые уже были (начиная с 500)

что произойдет в случае наложения ИД, и можно ли сейчас сразу присвоить при вставке максимальное значение ИД?
лопата
Дата: 21.11.2014 12:27:05