как напечатать атрибуты типа записи переменной, используя FND_FILE.PUT_LINE - Oracle - PullRequest
0 голосов
/ 17 марта 2020

Программа PL SQL использует переменную с именем x_api_errors, которая является типом записи, определяемым как: enter image description here

Я хочу напечатать x_api_errors.message_name и x_api_errors.message_text для Oracle Журнал заданий EBS с использованием FND_FILE.PUT_LINE.

Я ожидал, что это можно легко сделать, используя (согласно документации это должно работать):

FND_FILE.PUT_LINE(FND_FILE.LOG,v_api_errors.message_name);

.. но это дает:

[Error] PLS-00306 (343: 21): 
PLS-00306: wrong number or types of arguments in call to 'PUT_LINE'

Как я могу сделать эту работу? Кажется, это проблема, связанная с преобразованием типов, потому что, когда я пытаюсь сделать:

v_errorMessage:=v_api_errors.message_name;

Выдает ошибку:

[Error] PLS-00382 (344: 50): 
PLS-00382: expression is of wrong type

.. но я не могу TO_CHAR или CAST v_api_errors.message_name для VARCHAR2.

1 Ответ

2 голосов
/ 20 марта 2020

Согласно статье на https://itz4oracleapps.blogspot.com/2012/03/update-po-line-price-oracle-apps.html

В этом примере они delcare

 l_api_errors po_api_errors_rec_type;

Затем, когда они получают к ним доступ, они используют все * 1014. * как показано ниже

FOR i IN 1 .. l_api_errors.message_text.COUNT LOOP
  put_log (l_api_errors.message_text (i)); 
END LOOP;

Это указывает на то, что «вложенные объекты», как видно на скриншоте, являются массивами и должны быть доступны с использованием синтаксиса массива, например

v_api_errors.message_name(1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...