powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / WITH в хранимой процедуре
5 сообщений из 5, страница 1 из 1
WITH в хранимой процедуре
    #36526717
mwolf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Создаю хранимку
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
CREATE PROCEDURE GUS_ADM.DELETEATTRIBUTE (
  IN vAT_ID BIGINT,
  IN vDELETED_BY BIGINT
)
BEGIN ATOMIC
    DECLARE v_dummy integer;

    WITH a(attribute_id) as (
        select attribute_id from attribute where attribute_id = vAT_ID and datetime_deleted is null 
        UNION ALL
        SELECT at.attribute_id from attribute at, a where at.parent_id=a.attribute_id and at.datetime_deleted is null 
    )
,update_mtm_attrib2person as
    (select  1  FROM NEW TABLE (update mtm_attrib2person set DATETIME_DELETED = CURRENT TIMESTAMP, DELETED_BY = vDELETED_BY where attribute_id in (SELECT attribute_id FROM a)))
SELECT  1  INTO dummy FROM sysibm.sysdummy1;

END
~

На выходе
Код: plaintext
1.
2.
3.
4.
5.
 DB2 SQL error: SQLCODE: - 104 , SQLSTATE:  42601 , SQLERRMC: WITH;sysibm.sysdummy1;

;SELECT
 Message: An unexpected token "WITH" was found following "sysibm.sysdummy1".  Expected tokens may include:  "

".

Подобное создавалось не раз, что может быть не так?
...
Рейтинг: 0 / 0
WITH в хранимой процедуре
    #36526864
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mwolf,

Нельзя в SELECT INTO использовать WITH.
Используйте FOR statement .
Код: plaintext
1.
2.
3.
4.
5.
6.
for c1 as 
  WITH
  ...
  SELECT  1  col FROM sysibm.sysdummy1
do 
  set dummy = c1.col;
end for;
...
Рейтинг: 0 / 0
WITH в хранимой процедуре
    #36526888
mwolf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо за ответ.

Расширю вопрос. Мне надо сделать рекурсивный запрос - выбрать некоторые ИД, а потом проапдейтить строки с этими ИД. "Последним" запросом в СТЕ должен быть селект, но тогда не понятно куда девать возвращаемый рекордсет, и я не придумал ничего другого, как вставлять результат во временную переменную. Есть ли какой-то другой способ это сделать, не такой корявый как мой?
...
Рейтинг: 0 / 0
WITH в хранимой процедуре
    #36526951
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mwolfЕсть ли какой-то другой способ это сделать, не такой корявый как мой?Способ - нормальный.
Выглядит, может, и коряво, но делает то, что надо.
Зачем вам другой способ?
...
Рейтинг: 0 / 0
WITH в хранимой процедуре
    #36526959
mwolf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>>Зачем вам другой способ?
Просто ищу бест практикс ))
Ещё раз спасибо
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / WITH в хранимой процедуре
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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