Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Вопрос по хранимой процедуре
|
|||
|---|---|---|---|
|
#18+
Добрый день. Имеется некая хранимая процедура типа Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. А как сделать чтобы данные не возвращались сразу же, а только после запроса к курсору, примерно так Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2007, 12:45 |
|
||
|
Вопрос по хранимой процедуре
|
|||
|---|---|---|---|
|
#18+
Добрый день. Если PROCEDURE1 можно изменить, то в ней заполняйте результатами селекта временную таблицу, а не формируйте курсор. Если нельзя, тогда зависит от того, откуда вызывается PROCEDURE1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2007, 13:36 |
|
||
|
Вопрос по хранимой процедуре
|
|||
|---|---|---|---|
|
#18+
Процедуру пишу сам, поэтому права на изменения есть. Да этого момента считал что курсор это и есть временная таблица. Переделал процедуру следующим образом Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. и почему то ругается на переменную snmb, как тогда переменную туда передать? Как назло в SQL Reference Vol 2, нет ни одного примера для сравнения. Подскажите как правильно сделать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2007, 05:59 |
|
||
|
Вопрос по хранимой процедуре
|
|||
|---|---|---|---|
|
#18+
На сколько понял в DECLARE GLOBAL TEMPORARY TABLE только определяется структура таблицы, теперь не получаеися записать эти данные во временную таблицу Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2007, 08:56 |
|
||
|
Вопрос по хранимой процедуре
|
|||
|---|---|---|---|
|
#18+
в декларацию таблицы добавьте ON COMMIT PRESERVE ROWS ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2007, 10:12 |
|
||
|
Вопрос по хранимой процедуре
|
|||
|---|---|---|---|
|
#18+
mitekON COMMIT PRESERVE ROWS спасибо, странно что по умолчанию в таблице нельзя сохранять данные, тогда зачем такая таблица нужна. Ну да ладно. Пока разбираюсь с ХП, возникли другие вопросы. 1. Как определить, что на вход ХП передано нужное кол-во параметров. 2. Что входные параметры нужных типов. 3. Как прервать выполнение ХП если не выполнено одно из условий, с выводом сообщения. Заранее спасибо за ответы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2007, 10:23 |
|
||
|
Вопрос по хранимой процедуре
|
|||
|---|---|---|---|
|
#18+
OlegA67спасибо, странно что по умолчанию в таблице нельзя сохранять данные, тогда зачем такая таблица нужна. Ну да ладно. Пока разбираюсь с ХП, возникли другие вопросы. 1. Как определить, что на вход ХП передано нужное кол-во параметров. 2. Что входные параметры нужных типов. 3. Как прервать выполнение ХП если не выполнено одно из условий, с выводом сообщения.Временная таблица, созданная без предложения ON COMMIT PRESERVE ROWS , очищается после COMMIT. Если в приложении, вызывающем процедуру, установлен автокоммит (автоматическая выдача COMMIT после каждой sql команды), то такая таблица будет очищаться после вызова процедуры (т.к. после call commit буден выдан автоматом). Если не установлен - не будет очищаться. Чтобы очистки не происходило при установленном автокоммите, надо декларировать таблицу с ON COMMIT PRESERVE ROWS. 1. и 2. проверяется менеджером БД при вызове процедуры. 3. : SIGNAL statement ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2007, 10:40 |
|
||
|
Вопрос по хранимой процедуре
|
|||
|---|---|---|---|
|
#18+
Спасибо, тогда еще вопрос, не получается вставить конструкцию типа CASE. например Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. Или эта конструкция CASE используется только в операторе SELECT ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2007, 11:15 |
|
||
|
Вопрос по хранимой процедуре
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. В догонку к временным таблицам: вы в процедуре добавьте в конец декларации таблицы with replace , а то ваша процедура в одной и той же сессии сработает только 1 раз. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2007, 11:37 |
|
||
|
Вопрос по хранимой процедуре
|
|||
|---|---|---|---|
|
#18+
Mark Barinstein CASE statement Эта конструкция как раз и нужна была. Не могу понять параметр DYNAMIC RESULT SETS integer в CREATE PROCEDURE. Hасколько понял указывает верхний порог возвращаемых результатом, и как им пользоватся или вернее на что влияет этот параметр. )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2007, 08:20 |
|
||
|
Вопрос по хранимой процедуре
|
|||
|---|---|---|---|
|
#18+
Mark Barinsteinдобавьте в конец декларации таблицы with replace, а то ваша процедура в одной и той же сессии сработает только 1 раз В DB2 v 7.2 for win с таким использованием GLOBAL TEMPORARY был глюк: Без явного DROP TABLE при каждом повторном вызове процедуры на сервере съедались какие-то ресурсы (думаю не освобождалась память из под описания таблицы). Через каждые 200-400 итераций скачком увеличивалось время выполнения очередной итерации и в диспетчере задач на сервере увеличивался объем занятой памяти (выделялся очередной пул?). Память возращалась только по завершения сессии. Про более старшие версии не знаю - не работал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2007, 09:03 |
|
||
|
Вопрос по хранимой процедуре
|
|||
|---|---|---|---|
|
#18+
OlegA67Не могу понять параметр DYNAMIC RESULT SETS integer в CREATE PROCEDURE. Hасколько понял указывает верхний порог возвращаемых результатом, и как им пользоватся или вернее на что влияет этот параметр. ))Это просто декларация. Это кол-во записывается в системный каталог. В доке написано, что если кол-во реально возвращенных result set'ов не совпадает с тем, что было указано при создании, то должно выдаваться предупреждение (SQLSTATE 0100E). На самом деле этого не происходит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2007, 10:00 |
|
||
|
Вопрос по хранимой процедуре
|
|||
|---|---|---|---|
|
#18+
Возник еще вопрос, почему то не запускается хранимка, с использованием параметра в режиме OUT Вот пример Код: plaintext 1. 2. 3. 4. При выполенение команды DB2 CALL PROC.PROCEDURE2 (), выходит ошибка SQL0440N Не найдено авторизованной подпрограммы "PROC.PROCEDURE2" типа "PROCEDURE" с совместимыми аргументами. SQLSTATE=42884. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2007, 09:40 |
|
||
|
Вопрос по хранимой процедуре
|
|||
|---|---|---|---|
|
#18+
DB2 CALL PROC.PROCEDURE2 ( ? ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2007, 09:47 |
|
||
|
Вопрос по хранимой процедуре
|
|||
|---|---|---|---|
|
#18+
Огромное спасибо Mark Barinstein, из командной строки все заработало. Но не пучилось сразу запустить подобную хранимку из клиентского приложения(сделано на VFP9). С другого форума подсказали как это сделать. :o)). Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2007, 10:36 |
|
||
|
Вопрос по хранимой процедуре
|
|||
|---|---|---|---|
|
#18+
Возникла очередная проблема. Имеется ХП примерно такого вида Код: plaintext 1. 2. 3. 4. 5. "ИН42",1,"001-001-001 01","ИВАНОВ","ИВАН","ИВАНОВИЧ",2007,",664009,,,ДУБКИ Г,,СТРОИТЕЛЕЙ УЛ,1,В,1",7661.47,0.00,0.00, "01/01/2007/","15/03/2007" ,0,0,0,0,"07/04/2007" и вроде бы работало , пока не натолкнулся что vtext может быть и такого вида "ИН42",1,"001-001-001 01","ИВАНОВ","ИВАН","ИВАНОВИЧ",2007,",664009,,,ДУБКИ Г,,СТРОИТЕЛЕЙ УЛ,1,В,1",7661.47,0.00,0.00, "","" ,0,0,0,0,"07/04/2007" и тогда у меня ХП вылетает по ошибки SQL0180N Неверный синтаксис строчного представления даты и времени. SQLSTATE=22007 Собственно вопрос, как сделать чтоб по этой ошибке, процедура не прерывалась а переменной dexper присваивалось бы значение NULL. Буду признателен за подсказку ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2007, 04:55 |
|
||
|
Вопрос по хранимой процедуре
|
|||
|---|---|---|---|
|
#18+
Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2007, 11:08 |
|
||
|
Вопрос по хранимой процедуре
|
|||
|---|---|---|---|
|
#18+
Немножко не то, это бы работало если бы я точно определял бы , в какой позиции заканчивается дата. А так как не смог определить к чему привизаться то тупо поставил в качестве второго параметра функции SUBSTR() цифру 10. Конечно можно привизать к запятым, так это сколько раз мне писать тогда функции LOCATE. Может подскажите как это сделать красиво. С уважением ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2007, 11:41 |
|
||
|
Вопрос по хранимой процедуре
|
|||
|---|---|---|---|
|
#18+
OlegA67Может подскажите как это сделать красиво.Напишите скалярную функцию-токенайзер, которая будет получать на вход длинную строку атрибутов, разделенную запятыми, и номер подстроки, которую надо выделить. На выходе будет возвращаться нужная подстрока. К ней применяйте nullif. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2007, 12:28 |
|
||
|
Вопрос по хранимой процедуре
|
|||
|---|---|---|---|
|
#18+
Mark BarinsteinНапишите скалярную функцию-токенайзер Легко сказать, будем думать. Спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2007, 13:40 |
|
||
|
Вопрос по хранимой процедуре
|
|||
|---|---|---|---|
|
#18+
Немного не по теме, но: Для начала, я удаляю все кавычки <">, после делаю замену пустых значений <,,> на <,$,>. Бакс служит сигналом для пустого/неверного значения. Правда это не ХП, а в коде загрузчика пачек. З.Ы. Парсить текстовые файлы средствами СУБД, мягко сказать удивило... Стоит ли оно того? Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2007, 18:44 |
|
||
|
|

start [/forum/topic.php?fid=43&msg=34518375&tid=1604595]: |
0ms |
get settings: |
5ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
55ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
| others: | 241ms |
| total: | 382ms |

| 0 / 0 |
