在我将6i表单移植到11g之前(作为现代化程序的一部分)我还在测试添加一项新功能,这需要创建一个包含XML的文本文档。我在底层数据库(9.2.0.1.0)中创建了一个XMLType视图,以XML格式显示信息。
我试图使用TEXT_IO
内置表单(我知道我需要在11g中用WebUtils CLIENT_TEST_IO
替换它)
无论如何,这是我写的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)中,它工作正常并返回行。
答案 0 :(得分:0)
解决。我将视图更改为
create or replace VIEW SS_CDRS_EXPORT_COMP_XML AS
select
XMLELEMENT("CM_DATA",
XMLFOREST(TRIM(V.COMPNAME) AS COMPANYNAME,
....
))
AS "RESULT"
FROM v;
按钮中的行按代码为..
CURSOR C IS SELECT X.RESULT.GETSTRINGVAL() FROM SS_CDRS_EXPORT_COMP_XML X;