|
Можно ли курсор VFP передать в хранимую процедуру Oracle v9
|
|||
---|---|---|---|
#18+
Можно ли курсор VFP передать в хранимую процедуру Oracle v9? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2008, 10:31 |
|
Можно ли курсор VFP передать в хранимую процедуру Oracle v9
|
|||
---|---|---|---|
#18+
Интересно, а как это хотя бы в общих чертах представляется? Учитывая тот факт, что с фоксовыми курсорами умеет работать только фокс. Или речь идет только о передаче содержимого курсора на сервер? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2008, 14:14 |
|
Можно ли курсор VFP передать в хранимую процедуру Oracle v9
|
|||
---|---|---|---|
#18+
Как я понимаю, Вам нужно через execute immediate создать табличку со структурой сходной со сотруктурой фоксовского курсора. Затем заинсертить туда записи их курсора. В ORA поюзать эти данные, затем табличку дропнуть. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2008, 02:19 |
|
Можно ли курсор VFP передать в хранимую процедуру Oracle v9
|
|||
---|---|---|---|
#18+
Про Orecle - на знаю, но могу поделиться подобным с использованием MS SQL. Итак. 1. В фоксе - есть курсор 2. Преобразуем его в XML с помощью CURSORTOXML 3. Запускаем хранимую процедуру Код: plaintext
Соответственно хранимая процедура на сервере имеет вид Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2008, 14:58 |
|
Можно ли курсор VFP передать в хранимую процедуру Oracle v9
|
|||
---|---|---|---|
#18+
Хотелось конечно передать фоксовый курсор в виде параметра без конвертаций, но с XML тоже вариант. Буду пробовать. Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2008, 20:22 |
|
Можно ли курсор VFP передать в хранимую процедуру Oracle v9
|
|||
---|---|---|---|
#18+
Beaver_lgХотелось конечно передать фоксовый курсор в виде параметра без конвертаций, но с XML тоже вариант. Буду пробовать. Спасибо. Ой, не надо ничего конвертировать. Опиши подробнее задачу - что надо с этим курсором делать в Oracle. Кстати, курсор в Fox-е - это результат SELECT или что-то еще? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2008, 11:14 |
|
Можно ли курсор VFP передать в хранимую процедуру Oracle v9
|
|||
---|---|---|---|
#18+
tru55 Ой, не надо ничего конвертировать. Опиши подробнее задачу... - что надо с этим курсором делать в Oracle. Кстати, курсор в Fox-е - это результат SELECT или что-то еще? один из вариантов применения. на клиенте в локальный курсор набирются несколько записей (например позиции в накладной). далее их следует сохранить на сервер одной транзакцией с использованием хранимой процедуры. Вот и хочеться передать в качестве параметра процедуры курсор из клиента, который обработать уже на сервере. для операций с записями (ввод новых, изменение, удаление) используются хранимые процедуры. применение процедур обязательно, т.к. в них идет дополнительная проверка/контроль. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2008, 19:34 |
|
Можно ли курсор VFP передать в хранимую процедуру Oracle v9
|
|||
---|---|---|---|
#18+
Один из вариантов решения указанной проблемы - применение временной таблицы (Temporary table). Курсор передается во временную таблицу через хранимую процедуру. В случае успешной передачи всего курсора, данные временной таблицы передаются в рабочую в пределах одной транзакции. Для управления передачей можно в структуру передавемой информации добавить технологические поля: порядковый номер строки и общее количество строк. В случае неуспешной передачи курсора (например: разрыв соединения с базой до окончания передачи) заботся о частично переданных данных нет необходимости - этот вопрос берет на себя Оракл при обслуживании временной таблицы. При небольших размерах курсора такой способ вполне приемлем. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2008, 21:44 |
|
Можно ли курсор VFP передать в хранимую процедуру Oracle v9
|
|||
---|---|---|---|
#18+
Камрады - я офигеваю. Человек задает вопрос - как передать курсор из VFP в хранимую процедуру (в качестве аргумента)? Ответ: Vch1Курсор передается во временную таблицу через хранимую процедуру. Так как он передается-то ? Примеры кода в студию! ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2008, 09:58 |
|
Можно ли курсор VFP передать в хранимую процедуру Oracle v9
|
|||
---|---|---|---|
#18+
+1 Все, что здесь рассказано - передача содержимого курсора, а не самого курсора. Содержимое курсора передается обычными insert into ... И передать на сервер что-то иначе очень проблематично. А уж во временную или не временную таблицу - без разницы. Передать же курсор - невозможно, так как для разбора его на серверной стороне серверу надо знать, что такое фоксовый курсор и как с ним работать. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2008, 10:32 |
|
Можно ли курсор VFP передать в хранимую процедуру Oracle v9
|
|||
---|---|---|---|
#18+
PeisovКамрады - я офигеваю. Человек задает вопрос - как передать курсор из VFP в хранимую процедуру (в качестве аргумента)? Ответ: Vch1Курсор передается во временную таблицу через хранимую процедуру. Так как он передается-то ? Примеры кода в студию! А что такого тут есть, от чего можно "офигевать" !? Я правда не знаю, как это в ORACLE, есть ли там вообще временные таблицы и есть ли возможность их создать из клиента VFP, но механизм вполне обкатан для MS SQL. 1. Создаешь временную таблицу из клиента: Код: plaintext
Код: plaintext 1. 2. 3.
Код: plaintext
Код: plaintext
Использование временных таблиц, как буфера данных допустим так, как областью сушествования их в данном контексте использования является соединение с сервером. Но все так выглядит для MS SQL. Может для ORACLE это все не годиться? С уважением, Алексей P.S. Вариант с использование XML строки работает на больших данных быстрее. Для формирования XML строки (или файла, если данных очень много) можно использовать команду VFP - CURSORTOXML. Для извлечения данных из переданной в хранимую процедуру этой строки, проще всего использовать функцию OPENXML (для MS SQL) ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2008, 10:35 |
|
Можно ли курсор VFP передать в хранимую процедуру Oracle v9
|
|||
---|---|---|---|
#18+
проходящий.+1 Все, что здесь рассказано - передача содержимого курсора, а не самого курсора. Содержимое курсора передается обычными insert into ... И передать на сервер что-то иначе очень проблематично. А уж во временную или не временную таблицу - без разницы. Передать же курсор - невозможно, так как для разбора его на серверной стороне серверу надо знать, что такое фоксовый курсор и как с ним работать. А вы думаете, что Beaver_lg имел в виду что-то другое ? Хотя...., пора бы и автору вопроса что-нибудь пояснить. С уважением, Алексей ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2008, 10:38 |
|
Можно ли курсор VFP передать в хранимую процедуру Oracle v9
|
|||
---|---|---|---|
#18+
Aleksey-KА вы думаете, что Beaver_lg имел в виду что-то другое ? Понимаете ли, Алексей, совершенно неизживна наиваня мечта начинающих работать в архитектуре клиент-сервер передавать на сервер именно курсор. Произвольной структуры. Чтобы не писать тучу инсертов, при чем разных для каждого случая, не писать, опять же, для каждого случая свой разбор полученного на серверной стороне и т.д. Им жутко хочется универсальности. Один раз написал создание курсора, передал его на сервер, там тоже одной универсальной процедурой его разобрал и можно плевать в потолок. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2008, 11:06 |
|
Можно ли курсор VFP передать в хранимую процедуру Oracle v9
|
|||
---|---|---|---|
#18+
Sergey Sizov. Aleksey-KА вы думаете, что Beaver_lg имел в виду что-то другое ? Понимаете ли, Алексей, совершенно неизживна наиваня мечта начинающих работать в архитектуре клиент-сервер передавать на сервер именно курсор. Произвольной структуры. Чтобы не писать тучу инсертов, при чем разных для каждого случая, не писать, опять же, для каждого случая свой разбор полученного на серверной стороне и т.д. Им жутко хочется универсальности. Один раз написал создание курсора, передал его на сервер, там тоже одной универсальной процедурой его разобрал и можно плевать в потолок. А.. понял... :) Мечта.... солнце, пляж...девочки... курсор на сервер... ряд можно продолжить..... :) С уважением, Алексей ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2008, 11:14 |
|
Можно ли курсор VFP передать в хранимую процедуру Oracle v9
|
|||
---|---|---|---|
#18+
Beaver_lg tru55 Ой, не надо ничего конвертировать. Опиши подробнее задачу... - что надо с этим курсором делать в Oracle. Кстати, курсор в Fox-е - это результат SELECT или что-то еще? один из вариантов применения. на клиенте в локальный курсор набирются несколько записей (например позиции в накладной). далее их следует сохранить на сервер одной транзакцией с использованием хранимой процедуры. Вот и хочеться передать в качестве параметра процедуры курсор из клиента, который обработать уже на сервере. для операций с записями (ввод новых, изменение, удаление) используются хранимые процедуры. применение процедур обязательно, т.к. в них идет дополнительная проверка/контроль. Меня интересует, что значит "локальный курсор". Если это результат SELECT из некоторой таблицы - это одно. Например, позиции в накладной Код: plaintext 1. 2. 3.
Если это просто набор строк (например, набранных на экране в клиентском приложении), то надо и передавать этот самый набор строк, например, записав его во временную таблицу (как тут предлагалось) либо в коллекцию, находящуюся в пакете. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2008, 11:59 |
|
Можно ли курсор VFP передать в хранимую процедуру Oracle v9
|
|||
---|---|---|---|
#18+
для tru55: "локальный курсор" может быть и выборка с сервера - когда проводиться редактирование накладной, но в процессе редактирования могут быть добавлены новые записи еще не сохраненные в БД, а может быть и новая накладная которая еще не сохранялась в БД. Насчет мечты подмечено точно :-) Вариант с временной таблицой сервера думаю будет наиболее приемлимым. Прийдется все же писать две процедуры: одну для заполнения временной таблицы, а другую для обработки загруженных данных, раз нет универсального способа. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2008, 19:51 |
|
Можно ли курсор VFP передать в хранимую процедуру Oracle v9
|
|||
---|---|---|---|
#18+
Beaver_lg Создавать две процедуры совершенно не обязательно. Все можно сделать в одной. Так даже проще и удобнее. Peisov Построчно батенька, построчно. А ехидничать причин нет. Проблема передачи курсора связана с совместимостью типов данных параметров хранимой процедуры. В оракле есть тип данных - курсорная переменная, который может использоваться в параметрах хранимой процедуры. А в фоксе - нет. Например, в делфи есть тип данных курсор, который можно передать и получить через хранимую процедуру. При передаче больших объектов на сервер используется технология приемник-передатчик. Т.е. данные передаются пакетами и собираются на сервере, для чего оракл неявно использует временные таблицы. Поэтому решение о применении временной таблицы для передачи курсора не выглятит совершенно плохим. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2008, 22:24 |
|
Можно ли курсор VFP передать в хранимую процедуру Oracle v9
|
|||
---|---|---|---|
#18+
Aleksey-K, Супер-РЕСПЕКТ вам Алексей ! Совсем недавно занялся связкой VFP--MSSQL... И на примере малых баз попробовал милионные таблицы инсертить инту -- удалённый курсор, получил скорость 10-20 записей в сек.! ))) Ваш пример , несмотря на казалось-бы "тормозной внешний цикл" , обеспечил скорость - около 1000 зап/сек , и полностью решил проблему времени перелива БД в MSSQL ! :) СПАСИБО ! ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2012, 17:30 |
|
Можно ли курсор VFP передать в хранимую процедуру Oracle v9
|
|||
---|---|---|---|
#18+
Beaver_lgМожно ли курсор VFP передать в хранимую процедуру Oracle v9? Можно напрямую записать в базу оракла по odbc! Для этого не нужен вам xml и прочий кал. (никогда не слушайте лохов! ) Берём odbc драйвер оракла и вперёд с песней. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2012, 20:29 |
|
|
start [/forum/topic.php?fid=41&fpage=61&tid=1583816]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
27ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
82ms |
get tp. blocked users: |
2ms |
others: | 249ms |
total: | 409ms |
0 / 0 |