Xml 如何在ORACLE存储过程中将CLOB作为OUT参数返回
我想在OracleSQLDeveloper中为我的存储过程返回一个XML输出,如果有比CLOB更好的方法,我想以CLOBDatatypeSuggest的形式返回它。 我试着用谷歌搜索,但找不到任何有用的资源Xml 如何在ORACLE存储过程中将CLOB作为OUT参数返回,xml,oracle,stored-procedures,Xml,Oracle,Stored Procedures,我想在OracleSQLDeveloper中为我的存储过程返回一个XML输出,如果有比CLOB更好的方法,我想以CLOBDatatypeSuggest的形式返回它。 我试着用谷歌搜索,但找不到任何有用的资源 提前感谢。这里有一个简单的例子 CREATE TABLE "XML_STUFF" ( "COLUMN1" NUMBER(*,0) NOT NULL ENABLE, "XML_STUFF" "SYS"."XMLTYPE" , CONSTRAINT "XML_
提前感谢。这里有一个简单的例子
CREATE TABLE "XML_STUFF"
( "COLUMN1" NUMBER(*,0) NOT NULL ENABLE,
"XML_STUFF" "SYS"."XMLTYPE" ,
CONSTRAINT "XML_STUFF_PK" PRIMARY KEY ("COLUMN1")
USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
TABLESPACE "USERS" ENABLE
) SEGMENT CREATION IMMEDIATE
PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255
NOCOMPRESS LOGGING
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
TABLESPACE "USERS"
XMLTYPE COLUMN "XML_STUFF" STORE AS SECUREFILE CLOB (
TABLESPACE "USERS" ENABLE STORAGE IN ROW CHUNK 8192
NOCACHE LOGGING NOCOMPRESS KEEP_DUPLICATES
STORAGE(INITIAL 106496 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0
BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)) ;
-- insert some XML/records into your table
CREATE OR REPLACE PROCEDURE OUT_XML
(
PARAM1 IN INTEGER
, PARAM2 OUT CLOB
) AS
xml_bits xmltype;
BEGIN
select xml_stuff into xml_bits
from demo.xml_stuff
where column1 = param1;
param2 := xml_bits.getclobval();
dbms_output.put_line(param2); -- this is just here to make it easier to 'see'
END OUT_XML;
--run it!
DECLARE
PARAM1 NUMBER;
PARAM2 CLOB;
BEGIN
PARAM1 := 1;
DEMO.OUT_XML(
PARAM1 => PARAM1,
PARAM2 => PARAM2
);
/* Legacy output:
DBMS_OUTPUT.PUT_LINE('PARAM2 = ' || PARAM2);
*/
:PARAM2 := PARAM2;
--rollback;
END;
您的数据究竟是如何存储的?例如,您可以将XML存储为CLOB。OUT参数作为CLOB位相当简单。将数据转换为CLOB也很容易,因为有像getClobValYes这样的函数,我将XML存储为CLOB,并作为OUT参数返回。我对Oracle非常陌生,因此无法理解它。您会发现此资源也很有价值。我想,当我的列datatype存储在表中的XML为clob时,如何处理相同的问题。在您的示例中,XML数据保存在xmltype datatype列中,XML_STUFF.Its为CLOB数据类型抛出一个错误:Error9,10:PL/SQL:ORA-00932:不一致的数据类型:预期数量得到CLOBI如果它只是一个CLOB,则不需要函数调用getclobval。您试图将CLOB传递给数字的原因是什么?相应地进行了修改,并且我更新的存储过程在我的问题中看起来已编辑。请参阅。