powered by simpleCommunicator - 2.0.38     © 2025 Programmizd 02
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как получить CLOB из Oracle во внешнюю DLL в качестве параметра
17 сообщений из 17, страница 1 из 1
Как получить CLOB из Oracle во внешнюю DLL в качестве параметра
    #40106113
Sergey_rb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день!

Есть DLL, написанная на Delphi 8 XE
Она подключена к Oracle и волне себе работает до тех пор, пока размер входного параметра укладывается в VARCHAR2.

Если длина параметра больше, то возникает Оракловая ошибка "Ошибка числа или значения"

Если параметр поменять на CLOB, то ошибка исчезает, но в DLL вместо текста приходит "=" (знак равенства)

Кто-нибудь пробовал передавать в DLL Оракловый CLOB в качестве параметра?
...
Рейтинг: 0 / 0
Как получить CLOB из Oracle во внешнюю DLL в качестве параметра
    #40106114
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CLOB вроде как строковой блоб. С кодировками всё нормально?
...
Рейтинг: 0 / 0
Как получить CLOB из Oracle во внешнюю DLL в качестве параметра
    #40106115
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey_rb
Она подключена к Oracle
чем?
...
Рейтинг: 0 / 0
Как получить CLOB из Oracle во внешнюю DLL в качестве параметра
    #40106117
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey_rb,

1. Научитесь отделять мух от котлет, а входные параметры - от выходных.
2. При правильной архитектуре проекта DLL не вносит никаких особенностей. Если код работает в EXE и не работает в DLL - значит, вы криво работаете с DLL.
3. Да, многие работали с CLOBами в Oracle. Самыми разными способами, через разные способы доступа и т. п.
4. В случае таких вопросов напрашивается ответ "Вам нужен программист". Либо на работу, либо хотя бы в качестве консультанта.
...
Рейтинг: 0 / 0
Как получить CLOB из Oracle во внешнюю DLL в качестве параметра
    #40106122
Sergey_rb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Видимо я плохо объяснил.

Есть DLL, которая написана на Delphi.

Лежит она сервере Оракла

Оракловая процедура вызывает эту DLL, передавая в нее строковые параметры.

Иногда значение строкового параметра, передаваемого в DLL, превышает 40000 символов.

В Oracle для этого есть другой тип, называется CLOB.

Вопрос - как передать тип CLOB в DLL, написанную на Delphi?
...
Рейтинг: 0 / 0
Как получить CLOB из Oracle во внешнюю DLL в качестве параметра
    #40106124
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey_rbВопрос - как передать тип CLOB в DLL, написанную на Delphi?

Ответ: точно так же как и в DLL написанную на любом другом языке, в точности как
написано в документации Oracle.

Я даже погуглить за тебя могу: https://docs.oracle.com/cd/B14117_01/appdev.101/b10795/adfns_ex.htm
...
Рейтинг: 0 / 0
Как получить CLOB из Oracle во внешнюю DLL в качестве параметра
    #40106126
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey_rb
Вопрос - как передать тип CLOB в DLL, написанную на Delphi?

Это не Ваша забота. С этим вполне справляется сам Oracle, передавая туда OCILobLocator. От разработчика здесь требуется только указать в PL/SQL обёртке, что это параметр типа CLOB.
...
Рейтинг: 0 / 0
Как получить CLOB из Oracle во внешнюю DLL в качестве параметра
    #40106130
Sergey_rb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer
Sergey_rb
Вопрос - как передать тип CLOB в DLL, написанную на Delphi?

Это не Ваша забота. С этим вполне справляется сам Oracle, передавая туда OCILobLocator. От разработчика здесь требуется только указать в PL/SQL обёртке, что это параметр типа CLOB.


Так я уже делал - в результате в DLL я получал "=" знак равенства вместо текста
...
Рейтинг: 0 / 0
Как получить CLOB из Oracle во внешнюю DLL в качестве параметра
    #40106131
Sergey_rb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это я писал первом посте

Код: sql
1.
Если параметр поменять на CLOB, то ошибка исчезает, но в DLL вместо текста приходит "=" (знак равенства)
...
Рейтинг: 0 / 0
Как получить CLOB из Oracle во внешнюю DLL в качестве параметра
    #40106133
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey_rbТак я уже делал

Ты поменял объявление функции только в Оракуле. А надо было - и в Дельфи тоже.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как получить CLOB из Oracle во внешнюю DLL в качестве параметра
    #40106134
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov
Ты поменял объявление функции только в Оракуле. А надо было - и в Дельфи тоже.

И не только объявление, скорее всего.
...
Рейтинг: 0 / 0
Как получить CLOB из Oracle во внешнюю DLL в качестве параметра
    #40106135
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerИ не только объявление, скорее всего.

Ну, это-то и идиоту будет понятно после того как компилятор начнёт выдавать
ошибку на оставшийся код.

Хотя как раз с идиота станется попытаться привести OCILobLocator к String...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как получить CLOB из Oracle во внешнюю DLL в качестве параметра
    #40106137
Sergey_rb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Объявил я тип POCILOBLOCATOR, а дальше что с ним делать?
...
Рейтинг: 0 / 0
Как получить CLOB из Oracle во внешнюю DLL в качестве параметра
    #40106139
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что можно делать с типов данных в языках программирования? Варианты ответов:

а) Понюхать;
б) Полизать;
в) На хвост нанизать;
г) Использовать для объявления переменных и параметров подпрограмм.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как получить CLOB из Oracle во внешнюю DLL в качестве параметра
    #40106142
Sergey_rb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пытаюсь создать локатор

Код: plsql
1.
LOB:= TOCILOBLocator.Create();




Что указывать в качестве параметров?
...
Рейтинг: 0 / 0
Как получить CLOB из Oracle во внешнюю DLL в качестве параметра
    #40106145
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey_rbПытаюсь создать локатор

Зачем?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как получить CLOB из Oracle во внешнюю DLL в качестве параметра
    #40106146
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey_rb
Что указывать в качестве параметров?

Что написано об этом в документации по используемой библиотеке доступа? Я бы предположил, что хандл соединения с БД. И ещё раз советую обратить внимание на четвёртый пункт в моём списке.
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как получить CLOB из Oracle во внешнюю DLL в качестве параметра
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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