Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Несколько вопросов по ХП
|
|||
|---|---|---|---|
|
#18+
Здравствуйте всем! 1. Можно ли в теле процедуры объявлять и использовать массивы перменных? 2. Можно ли из процедуры вернуть выборку обычным RETURN (например, return select * from MYTAB), а не классическим способом через курсоры. 3. Можно ли вернуть выборку из временной таблицы, продекларированной внутри процедуры (declare global temporary table)? Возвращать только через открытый курсор или можно другим способом? Заранее благодарен. С уважением, Семен Попов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2009, 12:57 |
|
||
|
Несколько вопросов по ХП
|
|||
|---|---|---|---|
|
#18+
Здравствуйте. 1. Начиная с v9.5 есть Array support in SQL procedures . См. также Array support enhances application portability . 2. Нет. 3. Временная таблица, объявленная в процедуре, будет доступно приложению после вызова процедуры. Обратите внимание на то, что таблицу надо объявлять как 'on commit preserve rows', если нужен доступ к содержимому таблицы после commit. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2009, 13:38 |
|
||
|
Несколько вопросов по ХП
|
|||
|---|---|---|---|
|
#18+
Mark Barinstein1. Начиная с v9.5 есть Array support in SQL procedures . См. также Array support enhances application portability . 2. Нет. 3. Временная таблица, объявленная в процедуре, будет доступно приложению после вызова процедуры. Обратите внимание на то, что таблицу надо объявлять как 'on commit preserve rows', если нужен доступ к содержимому таблицы после commit.Спасибо. Из 2 и 3 понял, что если в процедуре декларируется временная таблица (например, declare global temporary table SESSION.MYTEMP) с опцией 'on commit preserve rows' и заполняется значениями, то после вызова процедуры я могу выполнить обычный select и получить данные? Код: plaintext По 1 пункту. DB2 v8.2. Как же быть? Мне нужно подготовить отчёт (таблица 11 строк Х 10 колонок) - статистические показатели по данным из базы. Не хочется объявлять в процедуре 110 переменных. Думал воспользоваться массивами - объявил бы 10 массивов нужных типов, и работал бы с ними. А в конце закинул бы массивы во временную таблицу и вернул из процедуры. Какой еще подход существует? Не поможет ли мне собственный тип (create type int11 as (v1 int, v2 int,...,v11 int) ), который бы я потом использовал в теле процедуры? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2009, 15:20 |
|
||
|
Несколько вопросов по ХП
|
|||
|---|---|---|---|
|
#18+
Semen PopovИз 2 и 3 понял, что если в процедуре декларируется временная таблица (например, declare global temporary table SESSION.MYTEMP) с опцией 'on commit preserve rows' и заполняется значениями, то после вызова процедуры я могу выполнить обычный select и получить данные? Код: plaintext Semen PopovПо 1 пункту. DB2 v8.2. Как же быть? Мне нужно подготовить отчёт (таблица 11 строк Х 10 колонок) - статистические показатели по данным из базы. Не хочется объявлять в процедуре 110 переменных. Думал воспользоваться массивами - объявил бы 10 массивов нужных типов, и работал бы с ними. А в конце закинул бы массивы во временную таблицу и вернул из процедуры. Какой еще подход существует? Не поможет ли мне собственный тип (create type int11 as (v1 int, v2 int,...,v11 int) ), который бы я потом использовал в теле процедуры?Если надо с массивами работать, то лучше писАть java или C процедуру. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2009, 16:25 |
|
||
|
Несколько вопросов по ХП
|
|||
|---|---|---|---|
|
#18+
Mark BarinsteinЕсли надо с массивами работать, то лучше писАть java или C процедуру.Как-нибудь и до них дойду. А пользовательские типы, созданные с помощью create type, в SQL PL использовать невозможно? Только в SQL? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2009, 16:56 |
|
||
|
Несколько вопросов по ХП
|
|||
|---|---|---|---|
|
#18+
Semen PopovА пользовательские типы, созданные с помощью create type, в SQL PL использовать невозможно? Только в SQL?Например так Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2009, 17:02 |
|
||
|
Несколько вопросов по ХП
|
|||
|---|---|---|---|
|
#18+
Ещё вопрос. Можно ли в теле процедуры пробежаться по таблице, не используя курсор? Например так, как было возможно в функции Код: plaintext 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2009, 12:11 |
|
||
|
Несколько вопросов по ХП
|
|||
|---|---|---|---|
|
#18+
Semen Popov, Нельзя использовать ';' после select. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2009, 12:19 |
|
||
|
Несколько вопросов по ХП
|
|||
|---|---|---|---|
|
#18+
Mark BarinsteinSemen Popov, Нельзя использовать ';' после select.Извините, это здесь написал от руки. А в том коде, что использую символа ';' нет. Но переменную не пропускает. Если убрать строку с присваиванием, то все в порядке. Код: plaintext 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2009, 12:35 |
|
||
|
Несколько вопросов по ХП
|
|||
|---|---|---|---|
|
#18+
Semen Popov, Так работает Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2009, 12:56 |
|
||
|
Несколько вопросов по ХП
|
|||
|---|---|---|---|
|
#18+
DB2 v8.2. Странно. Вот вся процедура: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. Почему ругается на переменную sp_var? Говорит, что недопустимо использовать в том месте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2009, 12:59 |
|
||
|
Несколько вопросов по ХП
|
|||
|---|---|---|---|
|
#18+
Semen Popov: DB2 v8.2. Странно. Вот вся процедура: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. Почему ругается на переменную sp_var? Говорит, что недопустимо использовать в том месте. Переменная видна только внутри compound блока (begin ... end), в котором она описана, а также внутри вложенных блоков в этот блок. У вас же переменная описана в одном блоке, а используется в другом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2009, 13:22 |
|
||
|
|

start [/forum/topic.php?fid=43&msg=35909013&tid=1603327]: |
0ms |
get settings: |
6ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
34ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
2ms |
| others: | 215ms |
| total: | 336ms |

| 0 / 0 |
