![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
распарсить строку во входящем параметре запроса [D6, FireBird]
tomkat © (2010-12-15 17:45:00)День добрый. подскажите оптимальное решение :есть запрос , входящий параметр - строка с перечнем дат , типа "01.05.2010;02.03.2009;07.08.2007", нужно получить список дат и для них запустить некую процедуру внутри.
Правильный$Вася (2010-12-17 17:09:00) [1]а насколько велик этот список дат?
не вылезет ли он за ограничение на длину строки или запроса?
Виталий Панасенко (2010-12-17 15:50:00) [2]кто-то из нас "гонит". особой разницы между процедурой и блоком нету...кроме одного: для блока не нужно "ковырять" БД. а так я "потерялся"...и не понял, почему блок нельзя юзать.. ну то от лукавого!
tomkat (2010-12-16 15:02:00) [3]
можно без процедуры..мне ж его из базы вызывать ... а вот внутри процедуры execute block не вызывается :-(
Виталий Панасенко (2010-12-16 14:15:00) [4]если ФБ 2,х, то можно без процедуры.. execute block Тебе в помощь
tomkat (2010-12-16 13:12:00) [5]ВОТ решение ! на входе пишем
01.02.2005,03.08.2007,17.12.2010
получаем
ID
01.02.2005
03.08.2007
17.12.2010
вот процедура
create procedure PARSDATESTR (
IDS varchar(32700))
returns (
ID varchar(100))
as
declare variable I integer = 1;
declare variable J integer = 1;
BEGIN
IDS = TRIM(:IDS);
WHILE (:I <= CHAR_LENGTH(:IDS)) DO
BEGIN
IF (',' = SUBSTRING(:IDS FROM :I FOR 1)) THEN
BEGIN
ID = SUBSTRING(:IDS FROM :J FOR :I - :J);
SUSPEND;
I = :I + 1;
J = :I;
END
I = :I + 1;
END
IF (:I > :J) THEN
BEGIN
ID = SUBSTRING(:IDS FROM :J FOR :I - :J);
SUSPEND;
END
END
tomkat (2010-12-16 13:07:00) [6]здесь нет таблицы, мне нужно генерировать набор записей из распарсеной строки входящего параметра
что-то с использованием WHILE, SUBSTRING
Виталий Панасенко (2010-12-16 13:04:00) [7]еще вариант - execute statement
tomkat (2010-12-16 12:38:00) [8]
select field1 from table1 where field1 in (1,2,3)
это как ? что такое (1,2,3) ???? при чем здесь таблица ??
Виталий Панасенко (2010-12-16 11:56:00) [9]execute block
Ega23 (2010-12-16 00:58:00) [10]
select field1 from table1 where field1 in (1,2,3)