![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Oracle [D7]
nnnicky © (2008-12-16 12:19:00)Добрый день!
Есть некая функция, которая вызывается через экшен.
Делаю так: в компонент OraQuery пишу запрос:
SELECT *
FROM TABLE (SVB_NETTING.build_netting_list
(
iNETTINGNUMBER IN NUMBER,
dDATENETTING IN DATE,
sUSERCREATE IN VARCHAR2
))RETURN RESULT_ERROR_NT
Соответственно вызываю:
procedure TfmHBBankNetting.act_BuildListExecute(Sender: TObject);
begin
inherited;
OraQuery.Execute;
end;
Нужно сделать: в случае если RESULT_ERROR_NT содержит записи показать в отдельном окне пользователю.
Вопрос простенький наверно, но что-то пока не пойму как сделать.
nnnicky (2008-12-30 09:02:00) [1]тема открыта... работает в developer всего лишь... )
nnnicky (2008-12-26 11:01:00) [2]
> оттестируй запрос с параметрами в pl/sql developer, потм
> будем с "выбором строки из Grida их читать" разбираться
работает
Petr V. Abramov (2008-12-25 17:35:00) [3]
> nnnicky (25.12.08 16:16) [50]
оттестируй запрос с параметрами в pl/sql developer, потм будем с "выбором строки из Grida их читать" разбираться
nnnicky (2008-12-25 16:16:00) [4]
procedure TfmHBListBank.Set_DataSet(bActive : Boolean);
var iID : integer;
iData : STRING;
i : integer;
iSelectedCount : integer;
begin
iSelectedCount := fmHBBankNetting.gBaseDBtv.Controller.SelectedRecordCount;
if iSelectedCount < 1 then exit;
if iSelectedCount > 0 then
begin
for i := 0 to iSelectedCount -1 do
iID := fmHBBankNetting.gBaseDBtv.Controller.SelectedRecords[i].Values[fmHBBankNetting.g BaseDBtv.GetColumnByFieldName('ID').Index];
DSHB.ParamByName('NETTINGNUMBER').AsInteger := iID ;
end;
Параметры из другой таблицы... Нужно выбором строки из Grida их читать. Т.е. выбираем строку с параметрами, жмем кнопку и вызываем процедуру. Параметры не видит...
Кщд (2008-12-25 08:03:00) [5]>nnnicky (24.12.08 12:11) [42]
SELECT *
FROM TABLE (cast(SVB_BLIZKO_NETTING.build_banknetting_list
( :NETTINGNUMBER,
:DATENETTING,
user
) as YourFunctionsType))
nnnicky (2008-12-24 16:19:00) [6]ошибка возникает при использовании параметров... Ну по всякому уже и всеравно никак :(
Petr V. Abramov (2008-12-24 16:11:00) [7]это связано с параметрами или нет???
nnnicky (2008-12-24 15:18:00) [8]
ORA-22905 cannot access rows from a non-nested table item
Cause: An attempt was made to access rows of an item whose type is not known at parse time or that is not of a nested table type.
Action: Use CAST to cast the item to a nested table type.
Так и в таблице такой тип....
nnnicky (2008-12-24 15:13:00) [9]ORA - 22905: Cannot access rows from a non-nested table item
sniknik (2008-12-24 12:47:00) [10]> передавайте дату, а не строку
у него не строка вообще то, насколько вижу, а число, результат странных вычислений...
Кщд (2008-12-24 12:35:00) [11]>nnnicky (24.12.08 12:11) [42]
приводите оригинальный текст ошибки
>dsHB.Params[1].AsDate := '08-12-2008';
передавайте дату, а не строку
nnnicky (2008-12-24 12:11:00) [12]
SELECT *
FROM TABLE (SVB_BLIZKO_NETTING.build_banknetting_list
( :NETTINGNUMBER,
:DATENETTING,
user
))
dsHB.Params[0].AsNumber := 10;
dsHB.Params[1].AsDate := 08-12-2008;
Не работают параметры... Тип Number и Date. Когда явно указываю значения - все ок. А так говорит нет таких данных
Petr V. Abramov (2008-12-22 16:45:00) [13]
> Кщд (22.12.08 10:08) [40]
так и drop column только аж в 8-й версии появилось.
я использую, от кучи другого гимра избавляет
Кщд (2008-12-22 10:08:00) [14]>Petr V. Abramov © (19.12.08 14:45) [39]
>не надо, alter type нормально работает, по крайней мере, на добавление атрибутов
с добавлением всё в порядке - cascade или invalidate - и вперед
проблемы начинаются с drop attribute и целой череды ограничений, связанных с ним
плюс к этому до сих нерешенная проблема с одноименными типами в разных схемах одного инстанса
всё это, конечно, обходится, но желание задействовать ООП механизм Oracle в продуктиве уменьшает до нуля
Petr V. Abramov (2008-12-19 14:45:00) [15]
> Кщд (19.12.08 14:10) [38]
>при изменении базового типа необходимо дропать ВСЁ дерево наследований > и прокатывать заново
не надо, alter type нормально работает, по крайней мере, на добавление атрибутов
> не дай боже поставить final-тип в качестве поля таблицы...
а что будет?
Кщд (2008-12-19 14:10:00) [16]>в 10-ке все очень культурно-мультурно работает
даже в 10-ке при изменении базового типа необходимо дропать ВСЁ дерево наследований и прокатывать заново
не дай боже поставить final-тип в качестве поля таблицы...
а без этого сам смысл использования теряется - проще пользоваться pipelined + pl/sql collections
т.е. как не было вменяемой поддержки типов, так и нет
и, судя по metalink, и не предвидится
Petr V. Abramov (2008-12-19 11:19:00) [17]
> Кщд (19.12.08 10:50) [36]
> если придираться по-серьезному, то больше улыбает оптимизм
> решений на create type,
в 10-ке все очень культурно-мультурно работает, фактическ ине реализованы только foreign ключи на поля подтипов. В 8-ке, да, была жесть с объектными типами, 9-ку я пропустил.
Кщд (2008-12-19 10:50:00) [18]>Petr V. Abramov © (18.12.08 17:51) [35]
>не нужен там begin ... end, чай не паскаль.
но на производительность-таки этот анонимный блок не влияет)
>select ... bulk collect into быстрее
мне совсем не верится, что автор привел реальный код ф-ции и в цикле нет exit when.
иначе, не совсем понятно, а зачем, собственно, нужна такая ф-ция?
если придираться по-серьезному, то больше улыбает оптимизм решений на create type, поддержку которого oracle задекларировал, видимо, в чисто маркетинговых целях, т.к. до сих пор нет корректной поддержки работы с ним
и отдельный большой привет тем системам, что начали использовать наследование таких объектов в oracle
Petr V. Abramov (2008-12-18 17:51:00) [19]
> nnnicky (18.12.08 17:29) [34]
не нужен там begin ... end, чай не паскаль.
и for nrec ... loop крутить ни к чему, select ... bulk collect into быстрее, если записей немного, если много, то fetch ... bulk collect into limit N
nnnicky (2008-12-18 17:29:00) [20]
> улыбает :)
чем же вас так улыбнуло?