0

在将我的 6i 表单移植到 11g(作为现代化计划的一部分)之前,我还在测试添加一个新功能,这需要创建一个包含 XML 的文本文档。我在底层数据库 (9.2.0.1.0) 中创建了一个 XMLType 视图,以将信息公开为 XML。我试图使用TEXT_IO内置的内部表单(我知道我需要CLIENT_TEST_IO在 11g 中用 WebUtils 替换它)

无论如何,这是WHEN-BUTTON_PRESSED我写的触发代码,但它不会编译。

在 Win7 32 位(VMWare 虚拟)上运行的 Forms Builder 11.1.2.0.0。

BEGIN
 DECLARE
 IN_FILE TEXT_IO.FILE_TYPE;
 XMLDOC VARCHAR2(4000);
 CURSOR C IS SELECT X.SYS_NC_ROWINFO$.GETSTRINGVAL() FROM SS_CDRS_EXPORT_COMP_XML2 X;
 BEGIN
  IN_FILE := TEXT_IO.FOPEN('C:\CDRSCOMP.XML','W'); 
  FOR C1 IN C LOOP
   TEXT_IO.PUT_LINE(IN_FILE, C1.OBJECT_VALUE.GETSTRINGVAL());
   NULL;
  END LOOP;
  TEXT_IO.FCLOSE(IN_FILE);
  EXCEPTION
  WHEN Others THEN
   NULL;
  TEXT_IO.FCLOSE(IN_FILE);
 END;
END;

它给出了错误:

no column 'SYS_NC_ROWINFO$' in table

运行语句:

SELECT X.SYS_NC_ROWINFO$.GETSTRINGVAL() FROM SS_CDRS_EXPORT_COMP_XML2 X;

在 SQLPlus (11.1.0.7.0) 中,它工作正常并返回行。

4

1 回答 1

0

解决。我将视图更改为类似

create or replace VIEW SS_CDRS_EXPORT_COMP_XML AS
select 
XMLELEMENT("CM_DATA",
 XMLFOREST(TRIM(V.COMPNAME) AS COMPANYNAME, 
 ....
 ))
AS "RESULT"

从 v;

并且按钮中的行按下代码到..

CURSOR C IS SELECT X.RESULT.GETSTRINGVAL() FROM SS_CDRS_EXPORT_COMP_XML X;
于 2013-08-09T16:44:20.547 回答