Переменные в PSQL ПОМОГИТЕ СРОЧНО

For _Record_piket in (SELECT public.excav_line.piket FROM public.excav_line
WHERE public.excav_line.id_smena in (ggg)
and public.excav_line.id_excav=2)
Мне нужно чтоб запрос получился in (135,134), а 135,134 в переменной типа техт я получил переменную _ggg c таким значением, но public.excav_line.id_smena типа integer
For _Record_piket in (SELECT public.excav_line.piket FROM public.excav_line
WHERE public.excav_line.id_smena in (135,134)
and public.excav_line.id_excav=2)
loop
....
End loop;

Опции просмотра комментариев

Выберите предпочитаемый вами способ показа комментариев и нажмите "Сохранить настройки" для активации изменений.

Можно сделать так FOR

Можно сделать так

FOR _Record_piket IN (SELECT public.excav_line.piket FROM public.excav_line
WHERE public.excav_line.id_smena = any (String_to_Array(ggg,','))
AND public.excav_line.id_excav=2)

ERROR: ПРЕТБФПТ ОЕ

ERROR: ПРЕТБФПТ ОЕ УХЭЕУФЧХЕФ: integer = text
LINE 1: ...ublic.excav_line WHERE public.excav_line.id_smena = any (Str...
^
HINT: No operator matches the given name and argument type(s). You might need to add explicit type casts.

Понимаете WHERE public.excav_line.id_smena это integer а в переменной уже есть "135,136" text

а вот так можно почему то не работает

sql_insert:=' SELECT * FROM public.excav_line WHERE public.excav_line.id_smena in (' ||_srt_sm_day|| ') AND public.excav_line.id_excav=' ||_Record.id_excav;
For _record_piket in EXECUTE sql_insert
Loop
_piket:='';
_flag:=True;
If _flag Then
_piket:=_Record_piket.piket;
_Flag:=false;
else
_piket:=_piket||', '||_Record_piket.piket;
End if;
End Loop;

Сделал как тут все работает.

Сделал как тут все работает. себе спасибо

Опции просмотра комментариев

Выберите предпочитаемый вами способ показа комментариев и нажмите "Сохранить настройки" для активации изменений.

Back to top

(С) Виктор Вислобоков, 2008-2023