Текущий архив: 2005.12.11;
Скачать: CL | DM;
ВнизOCI Найти похожие ветки
← →
vecna © (2005-11-21 21:06) [0]А нет ли у кого примерчика написанного с прямым обращением к OCI, которая коннектится к базе и выполняет запрос или процедурку. Желательно на Delphi. Можно и на C.
Исходники ODAC, DAO и т.д. не предлагать =)
Вроде как косяк в 9ке, хочу быть точно уверенным.
← →
ANB © (2005-11-21 21:16) [1]
> vecna © (21.11.05 21:06)
Какая версия в 9-ке ? И какой косяк ?
← →
vecna © (2005-11-21 21:34) [2]9206
косяк плавающий, причины его появления я не могу сформулировать, именно поэтому нужен пример воспроизводящий ошибку. проявляется при работе с CLOBами при вызове с клиента например такой процедуры:
create or replace procedure TEST(STABLENAME in varchar2, CMODULE in CLOB) as
begin
null;
end;
CLOB нужно создать не на сервере (в SQL-блоке), а через OCI. Например вот так (ODAC):
procedure LoadClob(const ATable, AClob: string);
var
LClob: TOraLob;
begin
LClob := TOraLob.Create(LSession.OCISvcCtx);
try
LClob.CreateTemporary(ltClob);
LClob.AsString := AClob;
LClob.WriteLob;
with TOraStoredProc.Create(nil) do
try
StoredProcName := "TEST_CLOB";
Session := LSession;
Prepare;
ParamByName("STABLENAME").AsString := ATable;
ParamByName("CMODULE").AsOraClob := LClob;
Execute;
finally
Free;
end;
finally
LCLob.Free;
end;
end;
получаю pl/sql numeric or value error.
достверно известно, что косяк на одном и том же наборе данных не проявляется на версиях 9201 - 9207, за исключением 9206, версия клиента значения не имеет.
я бы дал необходимый набор, но он слишком достаточно большой ~ 42 Мегов.
← →
vecna © (2005-11-21 21:35) [3]есессна:
StoredProcName := "TEST";
← →
ANB © (2005-11-21 22:44) [4]
> vecna © (21.11.05 21:35) [3]
Ух млин. Дамс. Исходников у меня нету, но наш оракловый гуру говорит, что в 9 целый список косяков. Я вообще то блобы на сервере создаю. Тот же гуру грит, что вышел патч 9.2.0.8.
← →
vecna © (2005-11-21 22:54) [5]то что косяков там полно я знаю =) уже намучался... просто большинство из них достаточно легко локализуются, а вот с этим просто засада какая-то...
← →
evvcom © (2005-11-22 09:05) [6]Я парился с блобами и нашел, что другие варианты, кроме как делать блоб-параметр in/out, не проходят, что собственно (другие варианты) у меня так и не получилось. Т.е. делаю примерно так:
create or replace MyProc(
pId MyTable.id %type,
pBody in out MyTable.body %type
) is
begin
update MyTable t
set t.body = pBody
where t.id = pId
returning t.body into pBody;
end;
Ну и в Дельфях:TOraParam(Params.ParamByName("pBody")).AsOraBlob.LoadFromFile(EditBody.Text);
или...AsOraBlob.Clear;
Это создание блоба на сервере или клиенте? Скорее на сервере, хотя...
← →
vecna © (2005-11-22 11:05) [7]> TOraParam(Params.ParamByName("pBody")).AsOraBlob.LoadFromFile(EditBody.Text);
такой вариант действительно будет работать только с in/out. но с этим проблем нет - это понятно.
← →
Desdechado © (2005-11-22 11:39) [8]погляди здесь http://www.stlport.com/download.html
это библиотека прямого доступа на C, там и примерчики есть
← →
Pazitron_Brain © (2005-11-22 11:45) [9]mailto: oci.base.delphi
Выполняю запрос...
Страницы: 1 вся ветка
Текущий архив: 2005.12.11;
Скачать: CL | DM;
Память: 0.46 MB
Время: 0.041 c