powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Указатели в PL\SQL
4 сообщений из 4, страница 1 из 1
Указатели в PL\SQL
    #32112083
Lz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Lz
Гость
Привет!

Не подскажите, как продекларировать функцию из внешней DLL, у которой тип одного параметра - (BYTE *)?
Пробовал описывать этот параметр как "IN OUT NOCOPY", но функция при вызове "падает".
...
Рейтинг: 0 / 0
Указатели в PL\SQL
    #32112095
Фотография Oracle X-pert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"Nocopy" ne podderzivaetsya ODBC/JDBC connect, t.k.
tvoi interface ne moget identifizirovat' ptr* na result...
Eto or binary_integer, or raw ( bit or "world")
...
Рейтинг: 0 / 0
Указатели в PL\SQL
    #32112188
Lz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Lz
Гость
Что-то не понимаю, причём тут ODBC?

Во внешней ДЛЛ есть такая функция (С++):
INT Func(const BYTE * Param1, const BYTE * Param2);
Фактически, параметры - это указатели на массивы байт.

Я ей хочу воспользоваться в хранимой оракловой процедуре.
Для этого пишу:
CREATE OR REPLACE LIBRARY ExtLib AS 'c:\oracle\ora81\ExtLib.dll';

Далее:
FUNCTION Func (
p_Param1 IN OUT NOCOPY VARCHAR2,
p_Param2 IN OUT NOCOPY VARCHAR2
)
RETURN BINARY_INTEGER
AS LANGUAGE C
LIBRARY ExtLib
NAME "Func";

После чего:
declare
p1 varchar2(10000) := 'asd';
p2 varchar2(10000) := 'asd';
i binary_integer := 0;
begin
i := Func(p1, p2);
end;

Получаю ошибку - "ORA-01405: fetched column value is NULL".
В чём может быть проблема?
...
Рейтинг: 0 / 0
Указатели в PL\SQL
    #32112311
Фотография Oracle X-pert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
teper' ponyatno!
Ya dumal, chto obrashenie idet is vneshnei application via ODBC.

Ty sam dal otvet. Varchar2 in Oracle eto ne zepochka bit, a array::
{ row_id
, character
}.
Poetomy conversion (const BYTE * Param1, const BYTE * Param2) ne prohodit.
Data conversion::
API C++ OCI

OCCI BYTES Bytes OCCIBYTES
OCCI ROWID Bytes OCCIROWID

Tebe nugno { RAW unsigned char[n] }.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Указатели в PL\SQL
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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