Текущее время: Вс, июл 20 2025, 17:30

Часовой пояс: UTC + 3 часа


Правила форума


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ Сообщений: 9 ] 
Автор Сообщение
 Заголовок сообщения: Ошибка вызова EXEC SQL.
СообщениеДобавлено: Пт, мар 02 2007, 19:36 
Специалист
Специалист

Зарегистрирован:
Пт, июл 29 2005, 13:13
Сообщения: 161
Возникла такая проблема.
Есть созданная на Oracle функция
Code:
CREATE OR REPLACE FUNCTION ZTEST (str1_ IN  VARCHAR2, str2_ IN VARCHAR2 ) ...

Все прекрасно работает если вызывать ее как
Code:
  EXEC SQL.
    declare begin
     DBMS_OUTPUT.put_line(ZTEST('стро', 'чка 1' ) );
    end;
  ENDEXEC.

Попытке передать в нее параметры через
Code:
  data:
    str1(10) type c value 'стро',
    str2(10) type c value 'чка 1'.

  EXEC SQL.
    declare begin
     DBMS_OUTPUT.put_line(ZTEST(:str1, :str2 ) );
    end;
  ENDEXEC.

все валится в Дамп с ошибкой (not all variables bounded).
1) Почему так происходит?
2) Как правильно передать переменные в вызов ?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, мар 02 2007, 20:45 
Председатель
Председатель
Аватара пользователя

Зарегистрирован:
Чт, апр 13 2006, 12:32
Сообщения: 1503
Откуда: Питер
EXEC SQL.
EXECUTE PROCEDURE
ZTEST(
IN :str1,
IN :str2 )
ENDEXEC.

Для выходного параметра, соотвественно указывайте OUT.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, мар 05 2007, 12:17 
Специалист
Специалист

Зарегистрирован:
Пт, июл 29 2005, 13:13
Сообщения: 161
vga написал(а):
EXEC SQL.
EXECUTE PROCEDURE
ZTEST(
IN :str1,
IN :str2 )
ENDEXEC.

Для выходного параметра, соотвественно указывайте OUT.

Работает, но не совсем. Теперь вылится в дамп по ошибке несоответствия типов переменных. Что характерно, если удалить из вкрипта возвращаемые значения и использовать только IN-параметры - все работает. Как бы узнать в какие типы преобразуется возвращаемое значение при обратном вызове.
ЗюЫю Пробовался вариант возвращать CHAR(1) (тип указывался в скрипте) - эффекта никакого. Все равно выдает ошибку преобразования типов.
Вопрос: как узнать каким типом станет значение БД при возврате в ABAP?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, мар 05 2007, 12:32 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Вт, сен 07 2004, 17:47
Сообщения: 2988
rush7ka написал(а):
...
Вопрос: как узнать каким типом станет значение БД при возврате в ABAP?

Прочитать документацию.

_________________
"После" - не значит "вследствие"


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, мар 05 2007, 12:56 
Специалист
Специалист

Зарегистрирован:
Пт, июл 29 2005, 13:13
Сообщения: 161
sy-uname написал(а):
Прочитать документацию.

Очень грамотный и полезный ответ. Спасибо :). В хелпе между прочем есть только алгоритм преобразования SAP --> Oracle. Про обратное преобразование там что-то не видно ничего.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, мар 05 2007, 14:08 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Вт, сен 07 2004, 17:47
Сообщения: 2988
rush7ka написал(а):
Очень грамотный и полезный ответ. Спасибо :). В хелпе между прочем есть только алгоритм преобразования SAP --> Oracle. Про обратное преобразование там что-то не видно ничего.

Всё там есть - и про туда, и про обратно[/url]

_________________
"После" - не значит "вследствие"


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, мар 06 2007, 10:18 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, авг 19 2004, 17:37
Сообщения: 1962
Откуда: Москва
Пол: Мужской
С вызовом Oracle-процедур из АБАПа все понятно. А вот интересно, возможно ли сделать наоборот, из СУБД-шной процедуры вызвать АБАП-функцию? Есть ли у Oracle (Informix, DB2...) какие то интерфейсы к внешним системам?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, мар 06 2007, 12:26 
Председатель
Председатель
Аватара пользователя

Зарегистрирован:
Чт, апр 13 2006, 12:32
Сообщения: 1503
Откуда: Питер
В оракле есть возможность запуска внешних программы. Почему бы внешней программой не быть скрипту на perl, использующему SAP::Rfc


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, мар 06 2007, 16:52 
Ассистент
Ассистент

Зарегистрирован:
Чт, дек 14 2006, 08:21
Сообщения: 31
Parazit написал:
С вызовом Oracle-процедур из АБАПа все понятно. А вот интересно, возможно ли сделать наоборот, из СУБД-шной процедуры вызвать АБАП-функцию? Есть ли у Oracle (Informix, DB2...) какие то интерфейсы к внешним системам?

в этом плане у sql server 2005 все замечательно. делаешь sap - функцию как web - сервис (не важно как, хоть с тем же .туе connector) и вызываешь из хранимой процедуры - вся писанина опять же на .net

в sql server 2000 это можно было делать через вызов методов com-объекта


Принять этот ответ
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 9 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot]


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB