Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Remote procedure (OUT parameter) / 18 сообщений из 18, страница 1 из 1
18.01.2006, 11:35
    #33488948
DIGITALPRO
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Remote procedure (OUT parameter)
Вообщем необходимо получить значение OUT параметра у
remote procedure (Оракловая процедура)

Код: plaintext
1.
2.
3.
4.
5.
ALTER PROCEDURE "DBA"."P_DOCTYPES_BASE_INSERT"(
in nCOMPANY numeric,
in nCRN numeric,
in sDOCCODE char( 25 ),
in sDOCNAME char( 160 ),
out nRN double) at 'SLVZ;;PARUS;P_DOCTYPES_BASE_INSERT'

Запускаю ее так

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
ALTER PROCEDURE "DBA"."P_TEST"
(  )

BEGIN
DECLARE ll double;

CALL "DBA"."P_DOCTYPES_BASE_INSERT"
( 1663001 , 46156001 ,'111','111-222-333',ll);
commit;
Message ll;

END
В принципе все ОК, но вот OUT параметр не выводит, т.е. он всегда = 0

В чем может быть проблема?
Весь хелп перелопатили и ничего не нашли
единственное ограничение (в хелпе) что в out параметре нельзя использовать numeric или decimal
...
Рейтинг: 0 / 0
18.01.2006, 12:34
    #33489150
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Remote procedure (OUT parameter)
Надо при вызове процедуты также указывать , что вы хотите получить значение этого параметра. Это указывается с помощью того же ключевого слова output, но в вызове.

единственное ограничение (в хелпе) что в out параметре нельзя использовать numeric или decimal

Да, если это только ASE, а не ASA.
Но похоже это все же ASA.
...
Рейтинг: 0 / 0
18.01.2006, 12:59
    #33489218
DIGITALPRO
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Remote procedure (OUT parameter)
Да это действительно ASA 9.0.2

Код: plaintext
NUMERIC and DECIMAL data types are allowed for IN parameters, but not for OUT or INOUT parameters.
- это из хелпа по ASA!

И все же можно пример, где надо написать этот самый OUTPUT
...
Рейтинг: 0 / 0
18.01.2006, 14:05
    #33489450
DIGITALPRO
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Remote procedure (OUT parameter)
Не ужели ни кто не сталкивался с текущей проблемой?

===============================
PB 9.0.2 (7534) ASA 9.0.2 (2451)
...
Рейтинг: 0 / 0
18.01.2006, 15:00
    #33489609
DIGITALPRO
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Remote procedure (OUT parameter)
ОЧ. НУЖНА ПОМОЩЬ!!!
...
Рейтинг: 0 / 0
18.01.2006, 15:47
    #33489730
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Remote procedure (OUT parameter)
DIGITALPROИ все же можно пример, где надо написать этот самый OUTPUT
Синтаксис вызова процедуры посмотрите ...
...
Рейтинг: 0 / 0
18.01.2006, 15:55
    #33489751
DIGITALPRO
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Remote procedure (OUT parameter)
Проблема была решена заменой ODBC
вместо драйвера
iAnywhere Solution 9 - Oracle Write Protocol
использовал
Oracle In ORAHome92

И все ОК!

===============================
PB 9.0.2 (7534) ASA 9.0.2 (2451)
...
Рейтинг: 0 / 0
18.01.2006, 22:11
    #33490478
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Remote procedure (OUT parameter)
DIGITALPROПроблема была решена заменой ODBC
Ну вот, не успел... Только хотел посоветовать поискать другой ODBC драйвер :)
...
Рейтинг: 0 / 0
24.01.2006, 10:04
    #33498846
DIGITALPRO
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Remote procedure (OUT parameter)
Возникла очередная проблема с REMOTE PROCEDURE

Необходимо выполнить процедуру у которой тип in параметра date (date это в ORACLE)

в хелпе ASA по написано
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Data types for remote procedures 
The following data types are allowed for RPC parameters. Other data types are disallowed:
[ UNSIGNED ] SMALLINT
[ UNSIGNED ] INT
[ UNSIGNED ] BIGINT
TINYINT
REAL
DOUBLE
CHAR
BIT

NUMERIC and DECIMAL data types are allowed for IN parameters, but not for OUT or INOUT parameters

Вопрос, как передать в процедуру параметр с типом date?
...
Рейтинг: 0 / 0
24.01.2006, 10:14
    #33498871
golsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Remote procedure (OUT parameter)
CHARом
...
Рейтинг: 0 / 0
24.01.2006, 10:24
    #33498895
DIGITALPRO
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Remote procedure (OUT parameter)
А можно немного разжевать?

т.е. сделал я сейчас
Код: plaintext
ALTER PROCEDURE "DBA"."P_ASA_TEST"(in rn numeric,in dDate char( 10 )) at 'SLVZ_ORAHome92;;PARUS;P_ASA_TEST'

вызываю
Код: plaintext
CALL "DBA"."P_ASA_TEST"( 1 , '2005-01-01');

И все одно, ошибка!
Код: plaintext
...literal does not match format string. ...

Формат уже вроде весь перепровал, сообщение одно и тоже,
толко при формате '01.01.2005' или '01/01/2005' сообщение следующего содержания
Код: plaintext
... not a valid month ... 
т.е. уже где то рядом (наверно)
есть еще предложения
===============================
PB 9.0.2 (7534) ASA 9.0.2 (2451)
...
Рейтинг: 0 / 0
24.01.2006, 10:48
    #33498965
Andyn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Remote procedure (OUT parameter)
А в Оракле при подстановке значения переданного параметра делаете to_date(p_inparam, 'yyyy-mm-dd') ?
...
Рейтинг: 0 / 0
24.01.2006, 10:58
    #33499020
DIGITALPRO
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Remote procedure (OUT parameter)
AndynА в Оракле при подстановке значения переданного параметра делаете to_date(p_inparam, 'yyyy-mm-dd') ?
А вообщето надо не то как вывести ораклу дату а передать параметр, ругается то при передаче!

Уважаемые, оч. срочно надо, уже 2 дня об стенку и бестолку!!!!
...
Рейтинг: 0 / 0
24.01.2006, 11:16
    #33499104
Andyn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Remote procedure (OUT parameter)
DIGITALPROА вообщето надо не то как вывести ораклу дату а передать параметр, ругается то при передаче! Если в вашей оракловой процедуре все закомментарить, все равно продолжает ругаться? Кстати, а у Оракловой процедуры параметр под дату какого типа, Date?
...
Рейтинг: 0 / 0
24.01.2006, 11:27
    #33499168
DIGITALPRO
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Remote procedure (OUT parameter)
Andyn Если в вашей оракловой процедуре все закомментарить, все равно продолжает ругаться? Кстати, а у Оракловой процедуры параметр под дату какого типа, Date?

Да, в оракловой процедуре тип Date
Все закомментировали в оракле, и все равно выдает ошибку(и) приведенные выше
...
Рейтинг: 0 / 0
24.01.2006, 11:33
    #33499192
Andyn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Remote procedure (OUT parameter)
Собственно вариантов наверно всего два:

1. У Оракловой процедуры сделать типа параметра под дату - строковый и потом внутри преобразовывать через to_date()

2. Настроить по умолчанию формат даты в Оракле на yyyy-mm-dd, либо сделать еще одну прокси-процедуру для установки формата даты для сессии, которая создается при вызове прокси-процедур и вызывать ее первой. В этой процедуре делать что-то вроде
Код: plaintext
1.
2.
begin
execute immediate 'alter session set nls_date_format = "yyyy-mm-dd hh24:mi:ss" ';
end;

Скорее всего ошибка происходит при попытке Оракла сконвертировать вашу строку в дату, т.к. у Оракла, в отличие от ASA, с этим есть проблемы. Мы, например, всегда явно указываем формат строки содержащей дату, даже если он совпадает с установленным по умолчанию для сессии, чтобы избежать ошибок типа "not a valid month" или чтобы не получить не ту дату.
...
Рейтинг: 0 / 0
24.01.2006, 11:57
    #33499294
DIGITALPRO
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Remote procedure (OUT parameter)
Спасибо за варианты!, но в оракле уже написаны некие стандартные процедуры которые собственно говоря не хотелось бы плодить, больше интересен вариант решения проблемы со стороны ASA.
...
Рейтинг: 0 / 0
24.01.2006, 12:29
    #33499430
DIGITALPRO
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Remote procedure (OUT parameter)
:)

Проблема решена следующим
Код: plaintext
ALTER PROCEDURE "DBA"."P_ASA_TEST"(in rn numeric,in dDate char( 20 )) at 'SLVZ_ORAHome92;;PARUS;P_ASA_TEST'
где dDate в оракте тип = date

При вызове
Код: plaintext
CALL "DBA"."P_ASA_TEST"( 1 , convert (char( 20 ), date('2005-03-31'),  106 ));

Все дело оказалось в формате!!!

===============================
PB 9.0.2 (7534) ASA 9.0.2 (2451)
...
Рейтинг: 0 / 0
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Remote procedure (OUT parameter) / 18 сообщений из 18, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]