Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

ORA-20004 при попытке задать параметр процедуре [D7]


Страницы:   1 2

12 ©   (2010-11-16 12:38:00) 

Из собственного редактора компонента TOraStoredProc;
из набора Oracle Data Access Components (1997-2004)
Ошибка ORA-20004, не видит параметров.

Программно тоже не выходит. Указываю параметры
 op1.ParamByName('ID_MAIN').Value := dataU.UserId;
 op1.ParamByName('ID_TO').Value := dataI.UserId;
 op1.Execute;
ругается, что нет таких параметров.

C лица, В PL/developer, вызываю
begin
 esbd_SUBJECT_REMOVE (413747, null);
end;
все нормально, переносит.
(ветку дерева с id1, делает как чайлд к id2)

написана так:

CREATE OR REPLACE PROCEDURE esbd_SUBJECT_REMOVE (ID_MAIN NUMBER, ID_TO NUMBER)
IS
 ID_UP_FOR_MAIN NUMBER := 0;
BEGIN
 select R.UP_ID into ID_UP_FOR_MAIN  -- старый владелец
....


12   (2010-11-19 13:02:00) [1]


> сами писали


а если бы поступило предложение поделится, то что бы вы ответили? :)


Игорь Шевченко   (2010-11-19 12:55:00) [2]


> а какие у вас?


сами писали


12   (2010-11-19 12:53:00) [3]


> надеялся, что они по образу и подобию наших работают.

а какие у вас?


Игорь Шевченко   (2010-11-19 12:25:00) [4]

Кщд   (18.11.10 11:41) [25]

Надо же, какие кривые компоненты :) в [24] я безусловно наугад ляпнул, с ODAC дело не имел, надеялся, что они по образу и подобию наших работают.


Кщд   (2010-11-18 11:41:00) [5]

>Игорь Шевченко ©   (18.11.10 10:29) [24]
http://zalil.ru/29978017


Игорь Шевченко   (2010-11-18 10:29:00) [6]


> ODAC пытается выполнить dbms_describe.describe_procedure
> для получения параметров процедуры


ODAC пытается выполнить OCIStmtPrepare для получения параметров.


12   (2010-11-18 10:02:00) [7]

Кажись победил :)
надо не

begin
 spravka.ESBD_SUBJECT_REMOVE(:ID_MAIN, :ID_TO);
end;

а

begin
 ESBD_SUBJECT_REMOVE(:ID_MAIN, :ID_TO);
end;

писать.

И заработало.


12   (2010-11-18 09:18:00) [8]

обновил клиента, обновил ODAC
не работает.
обновил назад клиента.
----

на другой машине, где сразу виделись параметры, при вызове процедуры ту же ерунду пишет
ORA-06550: line 2, column 11:
PLS-00302: component 'ESBD_SUBJECT_REMOVE' must be declared
ORA-06550: line 2, column 3:
PL/SQL: Statement ignored
--

TORAQuery работает и так и так. И когда ip:port:sid пишешь и когда ALIAS
===

все, не знаю как победить.
сдаюса :)
буду StartTransaction  Query Query Query  Commit


Кщд   (2010-11-17 11:19:00) [9]

>Petr V. Abramov ©   (17.11.10 00:02) [17]
а причем здесь протокол?
ODAC пытается выполнить dbms_describe.describe_procedure для получения параметров процедуры. Процедура выполняется, поднимая совершенно определенное исключение, говорящее о том, что при попытке парсинга произошла ошибка.
У автора, скорее всего, проблема с грантами, коли уж он точно уверен, что в pl/sql-dev и приложении он заходит под одним и тем же пользователем на один и тот же инстанс.)


12   (2010-11-17 10:08:00) [10]

op1.ParamByName('ID_MAIN').Value := dataU.UserId;
   op1.ParamByName('ID_TO').Value := dataI.UserId;
   op1.Prepare;
   op1.PrepareSQL;
   op1.ExecProc;

тоже самое


12   (2010-11-17 10:00:00) [11]

никак не победю  :)

А что теперь может быть?
Если так

op1: TOraStoredProc;

   op1.ParamByName('ID_MAIN').Value := dataU.UserId;
   op1.ParamByName('ID_TO').Value := dataI.UserId;
   op1.ExecProc;

ORA-06550: line 2, column 11:
PLS-00302: component 'ESBD_SUBJECT_REMOVE' must be declared
ORA-06550: line 2, column 3:
PL/SQL: Statement ignored

---------------------- или если так ---------
oqProcSubjectMove: TOraQuery;
sql.text = begin
 spravka.ESBD_SUBJECT_REMOVE(:ID_MAIN, :ID_TO);
end;

 oqProcSubjectMove.ParamByName('ID_MAIN').Value := dataU.UserId;
 oqProcSubjectMove.ParamByName('ID_TO').Value := dataI.UserId;
 oqProcSubjectMove.ExecSQL;

и тоже самое:
ORA-06550: line 2, column 11:
PLS-00302: component 'ESBD_SUBJECT_REMOVE' must be declared
ORA-06550: line 2, column 3:
PL/SQL: Statement ignored


12   (2010-11-17 08:29:00) [12]


> при том, что TNS-протокол официально не документирован,
> но ODAC по нему каким-то образом с сервером общается. каким
> - видим

но далее-более
а dataset и query работают ведь, ведь так первый раз глюкнуло, потому что  первый раз использовал TOraStoredProc из этого набора компонентов.
На DS и query галка net и полная адресация сервера прокатывала на ура.


Petr V. Abramov   (2010-11-17 00:02:00) [13]


> казалось бы, причем здесь ошибка парсинга, которую выдает
> dbms_describe))

при том, что TNS-протокол официально не документирован, но ODAC по нему каким-то образом с сервером общается. каким - видим ;)


Кщд   (2010-11-16 19:00:00) [14]

казалось бы, причем здесь ошибка парсинга, которую выдает dbms_describe))


12   (2010-11-16 17:47:00) [15]

причем
адрес:порт:sid = из oratns, но тем не менее.
и ничего не придумываю

все..
за множественность постов - извинения, эт от радости :)


12   (2010-11-16 17:43:00) [16]


>
> т.е.
> включаем NET и непишем адрес:порт:sid - неправильно.
> выключаем NET и пишем псевдоним из oratns - правильно
> и все заработало.


т.е.
включаем NET и пишем адрес:порт:sid - неправильно.
выключаем NET и пишем псевдоним из oratns - правильно


12   (2010-11-16 17:40:00) [17]

РЕШИЛОСЬ!
там одна галочка, NET зовется, включена была.
И потом как не пиши адрес сервера - не понимает.
Понимает только по псевдониму из oratns

т.е.
включаем NET и не пишем адрес:порт:sid - неправильно.
выключаем NET и пишем псевдоним из oratns - правильно
и все заработало.


12   (2010-11-16 17:31:00) [18]


> Кщд   (16.11.10 16:52) [11]

Заставили Вы меня поковыряться

PROCEDURE ESBD_SUBJECT_REMOVE
Имя Аргумента                  Тип                     В/Из   По-умолч
------------------------------ ----------------------- ------ --------
ID_MAIN                        NUMBER                  IN     DEFAULT
ID_TO                          NUMBER                  IN     DEFAULT

с лица, правой кнопкой мыши, Описать, тоже самое показавает..


Кщд   (2010-11-16 16:52:00) [19]

>12 ©   (16.11.10 16:08) [10]
>describe аналогична "с лица"?
из sqlplus выполнить dbms_describe.describe_procedure с параметром равным ESBD_SUBJECT_REMOVE
каков результат?


12   (2010-11-16 16:08:00) [20]


> попробуйте выполнить dbms_describe.decribe_procedure с Вашей
> процедурой

describe аналогична "с лица"?
тогда все ок.


> коннект в pl/sql developer и приложении под одним и тем
> же пользователем?

да


> к одному и тому же инстансу?

да


> select ao.*
> from all_objects ao
> where lower(ao.object_name) = 'esbd_subject_remove'


1 SPRAVKA ESBD_SUBJECT_REMOVE  63563  PROCEDURE 16.11.2010 10:06:59 16.11.2010 14:16:14 2010-11-16:14:16:03 VALID N N N

че-то с машиной, с другого компа работает..


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо