Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Процедура + массив (ASE 12.5) / 5 сообщений из 5, страница 1 из 1
18.03.2010, 15:49
    #36528854
Imperous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Процедура + массив (ASE 12.5)
Всем привет!

Подскажите как можно передать массив, например
ar1[x]
ar1[1] = 5
ar1[2] = 10
ar1[3] = 15
ar1[4] = 20
в процедуру? и как его принять в процедуре?
...
Рейтинг: 0 / 0
18.03.2010, 16:37
    #36529025
Ggg_old
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Процедура + массив (ASE 12.5)
1) формируете строку, где значения разделены запятыми. "1,2,3,4" и передаете ее как varchar
в процедуре распарсываете и загоняете во временную таблицу.
2) динамическим скриптом с клиента создается времянка, которая тут-же и заполняется. Потом вызывается нужный скрипт/хп, который уже использует эту времянку.
...
Рейтинг: 0 / 0
18.03.2010, 16:47
    #36529067
Kru
Kru
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Процедура + массив (ASE 12.5)
Использование переменной имеет ограничения.
Большой массив так не передать.
Распарсивание тоже может оказаться сложным.

Мы практикуем передачу временных таблиц.

Как сделать:
Создаёте процедуру которая читает из временной таблицы (в сессии создания процедуры таблицу необходимо создать, иначе процедура не скомпиллируется)

На клиенте генерите комманду:

создать таблицу
заполнить данными из массива
вызвать процедуру

Полезно будет Ваш вызов в логе прописать, чтобы если что проверить потом процедуру независимо от клиента.

Удачи
...
Рейтинг: 0 / 0
18.03.2010, 17:18
    #36529175
Imperous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Процедура + массив (ASE 12.5)
пасиб, понятно
жаль конечно что человеческим способ это не решается...
...
Рейтинг: 0 / 0
19.03.2010, 10:39
    #36530184
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Процедура + массив (ASE 12.5)
Imperous wrote:

> Подскажите как можно передать массив, например
> в процедуру? и как его принять в процедуре?

Никак, параметры процедур и вообще переменные не могут быть
массивами (массивов вообще в TSQL нет).

Так что ищите обходные пути. Самый лучший -- сделать
временную таблицу и процедуру к ней для заполния (добавление
одной строки) и удаления. Потом N раз вызывать эту
процедуру, затем -- основную процедуру. Она уже возмёт
данные из этой временной таблицы.
Вместо временной таблицы можно использовать псевдовременную.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Процедура + массив (ASE 12.5) / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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