powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Как преобразовать входной параметр в хранимой процедуре
12 сообщений из 12, страница 1 из 1
Как преобразовать входной параметр в хранимой процедуре
    #34883658
OlegA67
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.
На вход хранимке передается параметр spin VARCHAR(500).
Где spin может содержать разные значение, но вид примерной такой.
spin = '61000,61001,61005,610006'
И не знаю как запихнуть spin в условие запроса, чтобы выглядело примерно так
.... WHERE in_numbp IN (spin), где поле in_numbp имеет тип INTEGER. Выходит сообщение о несовместимости типов in_numbp и spin.
...
Рейтинг: 0 / 0
Как преобразовать входной параметр в хранимой процедуре
    #34883795
TORT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
declare SQL_CMD varchar(1000);

set SQL_CMD = "select ... from ... where id in ("||spin||")";
ну а дальше EXECUTE IMMEDIATE или PREPARE .... from SQL_CMD....
...
Рейтинг: 0 / 0
Как преобразовать входной параметр в хранимой процедуре
    #34883904
nkulikov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Может функцию написать в которой делать проверку данной строки да и в Cookbook был запрос по нормализации подобных строк.
...
Рейтинг: 0 / 0
Как преобразовать входной параметр в хранимой процедуре
    #34884225
OlegA67
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
TORTdeclare SQL_CMD varchar(1000);
set SQL_CMD = "select ... from ... where id in ("||spin||")";
Теперь возникли проблеммы, как вывести это в курсор. Такой синтаксис не отрабатывает
DECLARE cursor1 CURSOR WITH RETURN FOR EXECUTE IMMEDIATE SQL_CMD;
...
Рейтинг: 0 / 0
Как преобразовать входной параметр в хранимой процедуре
    #34884237
TORT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
declare c1 cursor for s1;

PREPARE s1 from SQL_CMD;
open c1;
что-то типа этого....
...
Рейтинг: 0 / 0
Как преобразовать входной параметр в хранимой процедуре
    #34885516
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
OlegA67Добрый день.
На вход хранимке передается параметр spin VARCHAR(500).
Где spin может содержать разные значение, но вид примерной такой.
spin = '61000,61001,61005,610006'
И не знаю как запихнуть spin в условие запроса, чтобы выглядело примерно так
.... WHERE in_numbp IN (spin), где поле in_numbp имеет тип INTEGER. Выходит сообщение о несовместимости типов in_numbp и spin.Добрый день.
Напишите табличную функцию-токенайзер (можно на sql, лучше на c), которая будет разбирать эту строку на фрагменты.
Потом ее можно будет использовать в запросе типа:
Код: plaintext
1.
2.
3.
select m.*
from my_tab m
join table(tokenizer('61000,61001,61005,610006')) t on m.spin=int(t.token)
where ...
На sql уже была здесь на форуме, если надо на c - пришите, пришлю.
...
Рейтинг: 0 / 0
Как преобразовать входной параметр в хранимой процедуре
    #34885538
TORT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tokenizer === REXX:)
...
Рейтинг: 0 / 0
Как преобразовать входной параметр в хранимой процедуре
    #34887410
OlegA67
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день Марк.
Создал udf proc.tokenizer на sql, то что написали Вы, а дальше не получается ее прикрутить к своему запросу, так как у мне в условие надо сделать
WHERE in_numb NOT IN ('61000,61001,61005,610006').
как правильно, переделать запрос, то что Вы писали
Код: plaintext
1.
2.
3.
select m.*
from my_tab m
join table(tokenizer('61000,61001,61005,610006')) t on m.spin=int(t.i)
where ...
...
Рейтинг: 0 / 0
Как преобразовать входной параметр в хранимой процедуре
    #34887510
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
select m.*
from my_tab m
where ...
and m.spin not in
(
select int(t.i)
from table(tokenizer('61000,61001,61005,610006')) t
)
...
Рейтинг: 0 / 0
Как преобразовать входной параметр в хранимой процедуре
    #34887691
OlegA67
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Огромное спасибо, все получилось
...
Рейтинг: 0 / 0
Как преобразовать входной параметр в хранимой процедуре
    #34889729
OlegA67
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Возник еще один вопрос по хранимке.
На вход передаются несколько параметров, где два из них VARCHAR(8)
(..., IN sved VARCHAR(8), IN kor VARCHAR(8))
И мне эти два парметра надо вставить в запрос в условие WHERE, в зависимости от значения самих параметров. То сеть если sved = '', то условие дожно быть vc_sved IS NULL, В противном случае vc_sved = sved, то же самое и по kor. Пока в голову приходит только использовать конструкцию CASE из 4x веток. С использованием EXECUTE IMMEDIATE , так и не получилось вывести данные в курсор. Буду признателен за советы
...
Рейтинг: 0 / 0
Как преобразовать входной параметр в хранимой процедуре
    #34889873
TORT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EXECUTE IMMEDIATE используется для команд insert, update, delete.... но не для select...
Для select'а свои конструкции....
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Как преобразовать входной параметр в хранимой процедуре
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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