Выше указанная хранимая процедура должна вернуть новую строку, которая не содержит знаков препинания, а также все символы в верхнем регистре.
В предыдущем проекте использовался для артикулов только ISO8859_1, новый проект требует использованиия UNICODE_FSS (желание заказчика)
в предыдущем проекте была написана UDF которая удаляла все ненужные символы.Обявлялась она так
DECLARE EXTERNAL FUNCTION STRIP_REF CSTRING(450) RETURNS CSTRING(450) FREE_IT ENTRY_POINT 'StripRef' MODULE_NAME 'libudf' Текст такой (может кому надо) library libudf; {$R *.res} uses Windows, SysUtils; function StripString(st: string; CharsToStrip: string): string; var I: Integer; begin Result := ''; for I := 1 to Length(st) do begin if Pos(st[I], CharsToStrip) = 0 then Result := Result + st[I]; end; end; threadvar fcRef: PAnsiChar; function StripRef(RefSrc: PChar): PChar; cdecl; export; begin if Pos('temp', StrPas(RefSrc)) > 0 then fcRef := 'TEMP' else fcRef := PChar(AnsiUpperCase(StripString(StrPas(RefSrc), ' .,^«»®™/\:;-+*()|~`!@"#$&?'''))); Result := fcRef; end; exports StripRef name 'StripRef'; begin System.IsMultiThread := True; end. В новом проекте я решил использовать PWideChar вместо PChar, но результат работы тестовой библиотеки показал, что возвращается искаженный результат.