Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2013.06.09;
Скачать: [xml.tar.bz2];

Вниз

ORA-20004 при попытке задать параметр процедуре   Найти похожие ветки 

 
12 ©   (2010-11-16 12:38) [0]

Из собственного редактора компонента 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-16 12:52) [1]

собственно, что сделать, чтоб она вызвалась из delphi?
уже и так пробвал
TOraQuery.SQL.TEXT :=
" begin  esbd_SUBJECT_REMOVE (:id1, :id2); end;эж
и TOraQuery.parametrByName("id1") и т.п. и ExecSQl;

опять не нравится параметр


 
12 ©   (2010-11-16 13:04) [2]

переписал - теперь больше ошибок
хотя все опять работает из PL/sql developer

посмотрите, если не трудно
http://zalil.ru/29978017

что он хочет от меня? и почему не видит


 
Petr V. Abramov ©   (2010-11-16 13:04) [3]


> 12 ©   (16.11.10 12:52) [1]

может, какой-нить редактор параметров у компонета есть, где их создать надо?


 
Petr V. Abramov ©   (2010-11-16 13:05) [4]

вообще

> Ошибка ORA-20004

это очень странно, 20004 в диапазоне юзерских кодов


 
Кщд   (2010-11-16 13:32) [5]

12 ©   (16.11.10 13:04) [2]
есть ещё объекты с таким же именем как процедура?


 
Кщд   (2010-11-16 13:37) [6]

>Petr V. Abramov ©   (16.11.10 13:05) [4]
рекомендуют использовать с >20005, т.к. индийские друзья всё же используют до 20005 во внутренностях системных пакетов и, перекрыв исключение, можно серьезно нарваться


 
12 ©   (2010-11-16 14:13) [7]


> может, какой-нить редактор параметров у компонета есть,
> где их создать надо?

на картинке его и использую


> это очень странно, 20004 в диапазоне юзерских кодов

странно, то странно, но в итоге то все равно не работает
смотрел в google, нашел что что-то там dbms не может описание получить, якобы.. Ну, по идеи и фиг с ним, почему ж просто в из TORAQuery не работает?...


> есть ещё объекты с таким же именем как процедура?

нет


 
12 ©   (2010-11-16 14:39) [8]

или клиент глючит? может такое быть?
он у меня старый-старый, 8.какойто, чтоб точно, что состряпаю - у всех работало.
наверное, пора обновиться, ща попробую. О результатах доложу :)


 
Кщд   (2010-11-16 14:48) [9]

12 ©   (16.11.10 14:13) [7]
>странно, то странно, но в итоге то все равно не работает
ничего странного - документированное исключение
попробуйте выполнить dbms_describe.decribe_procedure с Вашей процедурой
коннект в pl/sql developer и приложении под одним и тем же пользователем?
к одному и тому же инстансу?

и всё-таки:
select ao.*
from all_objects ao
where lower(ao.object_name) = "esbd_subject_remove"


 
12 ©   (2010-11-16 16:08) [10]


> попробуйте выполнить 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

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


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

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


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


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

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

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

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


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

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

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


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


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


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


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

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

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


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

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


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


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

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


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


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

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


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

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

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

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 10:08) [20]

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

тоже самое


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

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


 
12 ©   (2010-11-18 09:18) [22]

обновил клиента, обновил 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


 
12 ©   (2010-11-18 10:02) [23]

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

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

а

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

писать.

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


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


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


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


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

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


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

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

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


 
12 ©   (2010-11-19 12:53) [27]


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

а какие у вас?


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


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


сами писали


 
12 ©   (2010-11-19 13:02) [29]


> сами писали


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



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2013.06.09;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.52 MB
Время: 0.003 c
2-1352129772
Jimmy
2012-11-05 19:36
2013.06.09
Как быстро сравнить две строки?


15-1359614914
aka
2013-01-31 10:48
2013.06.09
простенький хостинг для проектов


8-1230999582
maxistent
2009-01-03 19:19
2013.06.09
Захват звука с микрофона и ACM-Components


3-1289900330
12
2010-11-16 12:38
2013.06.09
ORA-20004 при попытке задать параметр процедуре


2-1348466696
Вячеслав
2012-09-24 10:04
2013.06.09
Дескриптор ClientSocket





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский