Форум: "Базы";
Текущий архив: 2004.10.03;
Скачать: [xml.tar.bz2];
ВнизПомогите разобраться с ODAC компонентами Найти похожие ветки
← →
Virgo © (2004-09-07 12:32) [0]Есть такая проблема:
на сервере создан тип
CREATE TYPE test_array_t AS VARRAY (6) OF CHAR(10);
Я из Delphi пытаюсь выполнить код
OraQuery1.SQL.Clear;
OraQuery1.SQL.Add(" DECLARE");
OraQuery1.SQL.Add(" id NUMBER;");
OraQuery1.SQL.Add(" my_fields PROGRAMMER.test_array_t;");
OraQuery1.SQL.Add(" BEGIN");
OraQuery1.SQL.Add(" programmer.specific.sel_syscoding(10, :my_fields );");
OraQuery1.SQL.Add(" END;");
with OraQuery1.Params.ParamByName("nazn_fields").AsArray do begin
OCISvcCtx:= dmMain.OraSess.OCISvcCtx;
AllocObject("nazn_fields_t");
end;
OraQuery1.Execute;
"хозяином" всех объектов является PROGRAMMER
Под этим PROGRAMMER все работает, захожу под другим пользователем
выдает ошибку - "nazn_fields_t" - не найден
права на процедуру и на этот тип у данного User-a все есть.
Когда пишу AllocObject("programmer.nazn_fields_t"); -
не работает даже под PROGRAMMER - выдает ту же ошибку
Может кто сможет помочь разобраться в чем тут дело?
← →
Reindeer Moss Eater © (2004-09-07 13:10) [1]А он у тебя есть (тип), что бы быть найденным?
← →
Reindeer Moss Eater © (2004-09-07 13:17) [2]Я например его тоже не нашел.
← →
Virgo © (2004-09-07 13:20) [3]Я ошиблась при написании вопроса, конечно же
AllocObject("test_array_t");
← →
Reindeer Moss Eater © (2004-09-07 13:23) [4]И предлагаешь дать точный и исчерпывающий ответ по тексту вопроса, имеющему отдаленное отношение к проблеме?
Одно могу сказать определенно:
В сообщения об ошибках надо верить. Надо им верить, сообщениям об ошибках.
← →
Virgo © (2004-09-07 13:25) [5]смотри выше повнимательнее
← →
Reindeer Moss Eater © (2004-09-07 13:25) [6]with OraQuery1.Params.ParamByName("nazn_fields").AsArray do begin
Параметра "nazn_fields" я, например, тоже в упор не вижу.
← →
Reindeer Moss Eater © (2004-09-07 13:25) [7]смотри выше повнимательнее
пишите повнимательнее.
← →
Virgo © (2004-09-07 13:36) [8]Хорошо пишу еще раз, на самом деле тип такой есть
я же говорю, под PROGRAMMEROM все работает
просто я поторопилась, прошу прощения
на сервере создан тип
CREATE TYPE nazn_fields_t AS VARRAY (6) OF CHAR(10);
Я из Delphi пытаюсь выполнить код
OraQuery1.SQL.Clear;
OraQuery1.SQL.Add(" DECLARE");
OraQuery1.SQL.Add(" id NUMBER;");
OraQuery1.SQL.Add(" nazn_fields PROGRAMMER.nazn_fields_t;");
OraQuery1.SQL.Add(" BEGIN");
OraQuery1.SQL.Add(" programmer.specific.sel_syscoding(10, :nazn_fields );");
OraQuery1.SQL.Add(" END;");
with OraQuery1.Params.ParamByName("nazn_fields").AsArray do begin
OCISvcCtx:= dmMain.OraSess.OCISvcCtx;
AllocObject("nazn_fields_t");
end;
OraQuery1.Execute;
"хозяином" всех объектов является PROGRAMMER
Под этим PROGRAMMER все работает, захожу под другим пользователем
выдает ошибку - "nazn_fields_t" - не найден
права на процедуру и на этот тип у данного User-a все есть.
Когда пишу AllocObject("programmer.nazn_fields_t"); -
не работает даже под PROGRAMMER - выдает ту же ошибку
← →
Reindeer Moss Eater © (2004-09-07 13:40) [9]права на процедуру и на этот тип у данного User-a все есть.
Я бы убрал на время ODAC и Delphi и проверил справедливость этого высказывания в "плюсе" или еще где.
← →
Virgo © (2004-09-07 13:43) [10]в том то и дело, что в SQL Navigator-e
под тем "другим" пользователем этот блок выполняется
← →
Virgo © (2004-09-07 13:52) [11]проблема скорее всего в компоненте OraQuery1
with OraQuery1.Params.ParamByName("nazn_fields").AsArray do
begin
OCISvcCtx:= dmMain.OraSess.OCISvcCtx;
AllocObject("nazn_fields_t");
end;
ошибку выдает в это блоке на четвертой строке -
AllocObject("nazn_fields_t");
Что делать, не знаю
← →
roottim © (2004-09-07 14:23) [12]>права на процедуру и на этот тип у данного User-a все есть.
через роль или по объектной привилеги??
← →
Virgo © (2004-09-07 14:26) [13]и через роль пробовала и по объектной привилегии пробовала
результат один и тот же
я думаю, может еще какие-нибудь привилегии нужны?
может системные какие-нибудь?
← →
Reindeer Moss Eater © (2004-09-07 14:39) [14]Вряд ли.
Блок же работает в навигаторе.
← →
roottim © (2004-09-07 14:40) [15]дайте всё: роль DBA + объектные привилегии
"programmer." оставте...
← →
}|{yk © (2004-09-07 14:58) [16]А это...
alter session set current_schema = YOUR_SESSION
делала?
← →
roottim © (2004-09-07 15:30) [17]2}|{yk © (07.09.04 14:58) [16]
это избавляет только от префиксаprogrammer
← →
Virgo © (2004-09-08 06:34) [18]
> А это...
> alter session set current_schema = YOUR_SESSION
> делала?
Помогло :) спасибо большое
а вот
> дайте всё: роль DBA + объектные привилегии
результата не дало
← →
roottim © (2004-09-08 08:17) [19]2Virgo © (08.09.04 06:34) [18]
видимо либо ODAC неверно отпарсировар строку, либо вы что-то не так написали в имени схемы... по сорсам одака разбор строки идет нормально
← →
Virgo © (2004-09-08 08:37) [20]
> видимо либо ODAC неверно отпарсировар строку, либо вы что-то
> не так написали в имени схемы... по сорсам одака разбор
> строки идет нормально
что интересно: в этом случае работает только без имени схемы
> with OraQuery1.Params.ParamByName("nazn_fields").AsArray
> do begin
> OCISvcCtx:= dmMain.OraSess.OCISvcCtx;
> AllocObject("nazn_fields_t");
> end;
если добавляю имя схемы - programmer.nazn_fields_t
опять та же ошибка
скорее всего дело в ODAC-е
← →
roottim © (2004-09-08 09:52) [21]вот код одака где он проводит разбор
i := Pos(".", Name);
if i > 0 then begin
TypeName := Copy(Name, i + 1, Length(Name));
SchemaName := Copy(Name, 1, i - 1);
AName := """+ SchemaName + ""."" + TypeName + """; //
end
else begin
TypeName := AnsiUpperCase(Name);
AName := Name;
SchemaName := "";
end;
отсюда видно, что если нет префикса схемы то имя типа передается в oci большими буквами без кавычек.
А в вашем случае вы пишите префикс.тип маленькими буквами, из которых одак собирает регистрозависимую строку(в кавычках), из-за чего оракл незнает такого типа .. отсюда и баг одака.
ПОПРОБУЙТЕ СДЕЛАТЬ ТОЖЕ САМОЕ С ПРЕФИКСОМ:AllocObject("PROGRAMMER.NAZN_FIELDS_T");
← →
Virgo © (2004-09-08 11:10) [22]
> roottim ©
> ПОПРОБУЙТЕ СДЕЛАТЬ ТОЖЕ САМОЕ С ПРЕФИКСОМ:
> AllocObject("PROGRAMMER.NAZN_FIELDS_T");
а ведь верно, спасибо, в верхнем регистре сработало :)
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.10.03;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.048 c