如何使用 FND_FILE.PUT_LINE 打印变量的记录类型属性 - Oracle

how to print record type attributes of a variable using FND_FILE.PUT_LINE - Oracle

一个 PLSQL 程序使用一个名为 x_api_errors 的变量,它是一个记录类型,定义为:

我想使用 FND_FILE.PUT_LINE 将 x_api_errors.message_name 和 x_api_errors.message_text 打印到 Oracle EBS 作业日志。

我希望这可以很容易地完成使用(根据文档这应该有效):

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_CHARCAST v_api_errors.message_name 到 VARCHAR2。

根据 https://itz4oracleapps.blogspot.com/2012/03/update-po-line-price-oracle-apps.html

上的文章

在那个例子中,他们 delcare

 l_api_errors po_api_errors_rec_type;

然后当他们访问它时,他们使用如下循环访问它

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

这表明在您的屏幕截图中看到的 'Nested objects' 是数组,需要使用数组语法访问,例如

v_api_errors.message_name(1)