powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Informix [игнор отключен] [закрыт для гостей] / И опять хранимая процедура :(
9 сообщений из 9, страница 1 из 1
И опять хранимая процедура :(
    #33344643
SNK2004
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Имеем храниму процедуру.

CREATE FUNCTION get_clients_subscr(pr_ids INTEGER,cat_ids char)
...
в cat_ids я в нее должен передать "1,5,7,9"
чтоб потом выполнить запрос в хранимой процедруре типа
SELECT ..... WHERE id IN (cat_ids)

Информикс понятное дело считает cat_ids текстом как это исправить.
Возможно ли это???
...
Рейтинг: 0 / 0
И опять хранимая процедура :(
    #33344716
Valentyn Pidburtnyi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SNK2004Имеем храниму процедуру.

CREATE FUNCTION get_clients_subscr(pr_ids INTEGER,cat_ids char)
...
в cat_ids я в нее должен передать "1,5,7,9"
чтоб потом выполнить запрос в хранимой процедруре типа
SELECT ..... WHERE id IN (cat_ids)

Информикс понятное дело считает cat_ids текстом как это исправить.
Возможно ли это???
CREATE FUNCTION get_clients_subscr
(
pr_ids INTEGER
,cat_ids set(int not null)
);

SELECT ..... WHERE id IN cast(cat_ids as set (int not null));

end function;




ЗЫ
Передавать параметр в виде
set{1,5,7,9}
...
Рейтинг: 0 / 0
И опять хранимая процедура :(
    #33344953
SNK2004
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
сорри, но выполнять так???
EXECUTE PROCEDURE get_clients_subscr(9,set{1,5,7,9})


в тело процедуры я повставлял:
CREATE FUNCTION get_clients_subscr(pr_ids INTEGER,cat_ids set(int not null))
.....
....IN cast(cat_ids as set (int not null))
.......


Выдается ошибка "General exeption error has occured in the optimizer"
...
Рейтинг: 0 / 0
И опять хранимая процедура :(
    #33344954
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SNK2004Имеем храниму процедуру.

CREATE FUNCTION get_clients_subscr(pr_ids INTEGER,cat_ids char)
...
в cat_ids я в нее должен передать "1,5,7,9"
чтоб потом выполнить запрос в хранимой процедруре типа
SELECT ..... WHERE id IN (cat_ids)

Информикс понятное дело считает cat_ids текстом как это исправить.
Возможно ли это???
а может:
Создать табличку

Groups
GroupID GroupMember1 1 1 5 1 7 1 9 2 12 43 63 7

Процедуру

Код: plaintext
1.
2.
3.
4.
CREATE FUNCTION get_clients_subscr(pr_ids INTEGER,cat_ids int) 

SELECT ..... WHERE id IN (select GroupMember from Groups where GroupID = cat_ids)

...
Рейтинг: 0 / 0
И опять хранимая процедура :(
    #33345068
SNK2004
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
запрос выполняется очень часто.
Если я буду создавать каждый раз временную таблицу с нужным мне набором параметров, то не будет ли это сильно грузить сервер??? Я думаю будет.

Массив передать никак нельзя, что потом его использовать в IN($array)
???
...
Рейтинг: 0 / 0
И опять хранимая процедура :(
    #33345081
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SNK2004запрос выполняется очень часто.
Если я буду создавать каждый раз временную таблицу с нужным мне набором параметров, то не будет ли это сильно грузить сервер??? Я думаю будет.
...
???
Гы, видимо я неправильно понял задачу, я говорил про постоянную табличку :).

Про (Выдается ошибка "General exeption error has occured in the optimizer"), версия информикса какая? Пиши в саппорт.
...
Рейтинг: 0 / 0
И опять хранимая процедура :(
    #33345324
лшк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пиши процедуру не на SPL , а на ESQL/C
...
Рейтинг: 0 / 0
И опять хранимая процедура :(
    #33347111
win-kim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SNK2004Имеем храниму процедуру.

CREATE FUNCTION get_clients_subscr(pr_ids INTEGER,cat_ids char)
...
в cat_ids я в нее должен передать "1,5,7,9"
чтоб потом выполнить запрос в хранимой процедруре типа
SELECT ..... WHERE id IN (cat_ids)

Информикс понятное дело считает cat_ids текстом как это исправить.
Возможно ли это???

Ты можешь в таком случае использовать динамический SQL. Где его взять и как установить ищи на форуме или в FAQ
...
Рейтинг: 0 / 0
И опять хранимая процедура :(
    #33347412
Valentyn Pidburtnyi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SNK2004сорри, но выполнять так???
EXECUTE PROCEDURE get_clients_subscr(9,set{1,5,7,9})


в тело процедуры я повставлял:
CREATE FUNCTION get_clients_subscr(pr_ids INTEGER,cat_ids set(int not null))
.....
....IN cast(cat_ids as set (int not null))
.......


Выдается ошибка "General exeption error has occured in the optimizer"
create temp table zTemp(a int)with no log;
insert into zTemp values (1); insert into zTemp values (2);
insert into zTemp values (3); insert into zTemp values (4);

CREATE function __func(_set set(int not null)) returning int;
define _a int;
select count(a) into _a from zTemp where a in cast(_set as set(int not null));
return _a;
end function;

EXECUTE PROCEDURE __func(set{1,5,3,9});

drop table zTemp;

ЗЫ
У мя все нормально отрабатывает.

IBM Informix Dynamic Server Version 9.40.UC4
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Informix [игнор отключен] [закрыт для гостей] / И опять хранимая процедура :(
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]