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

Часовой пояс: 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 часа


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

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