Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
динамический sql
|
|||
|---|---|---|---|
|
#18+
У меня классическая задача возникла, но никак не могу разобрацца. Подскажите, плз. Нужна функция, принимающая имя таблицы и поля, и возвращающая заданное поле, отсортированное по возрастанию. Думаю примерно так: CREATE FUNCTION dynSelect (tableName varchar(255), rowName varchar(255)) RETURNS varchar(255) LANGUAGE SQL CONTAINS SQL begin atomic DECLARE v_dynSQL varchar(600); declare c cursor for v_dynSQL; DECLARE res varchar(255); SET v_dynSQL = 'select ' || rowName || ' from ' || tableName || ' order by ' || rowName || ' ASC'; PREPARE c FROM v_dynSQL; OPEN c; FETCH c INTO res; CLOSE c; RETURN res; end^ при этом не разобрался, как возвращать не одно значение, а весь результат. заранее спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2007, 13:32 |
|
||
|
динамический sql
|
|||
|---|---|---|---|
|
#18+
В db2 for LUW вы не можете использовать динамический sql, курсоры в SQL UDF. Вы можете: 1. Написать external UDF (c, java) 2. Написать хранимаю процедуру, возвращающую result set. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2007, 14:43 |
|
||
|
динамический sql
|
|||
|---|---|---|---|
|
#18+
в таком случае конечно хранимая процедура... но все равно есть проблемы. пишу так: drop PROCEDURE dynSelect^ CREATE PROCEDURE dynSelect (tableName varchar(255), colName varchar(255)) LANGUAGE SQL MODIFIES SQL DATA DYNAMIC RESULT SETS 1 begin atomic DECLARE res varchar(255); DECLARE v_dynSQL varchar(600); declare c cursor with return for v_dynSQL; SET v_dynSQL = 'select ' || colName || ' from ' || tableName; PREPARE c FROM v_dynSQL; OPEN c; FETCH c INTO res; CLOSE c; end^ 1. каким образом вернуть весь столбец вместо первого значения 2. при выполнении функции возвращается ошибка: The cursor "C" is not in a prepared state ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2007, 17:08 |
|
||
|
динамический sql
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2007, 17:36 |
|
||
|
|

start [/forum/topic.php?fid=43&msg=34564496&tid=1604550]: |
0ms |
get settings: |
11ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
37ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
36ms |
get tp. blocked users: |
1ms |
| others: | 267ms |
| total: | 387ms |

| 0 / 0 |
