我有一个带有XMLTYPE列的表,并且我想以XML格式向其中插入数据,但信息不是以XML格式从服务器来的。我正在考虑实现一个从服务器获取值并将数据以XML格式插入到该列的存储过程,但该过程给了我正确的括号错误,我不知道为什么。Oracle将数据插入到XML类型表
下面的代码:
CREATE TABLE xml_tab (
id NUMBER,
xml_data XMLTYPE
);
ALTER TABLE XML_TAB
MODIFY (ID DEFAULT XML_TAB_SEQ.NEXTVAL);
而且我想要执行存储过程。
CREATE OR REPLACE PROCEDURE insert_xml_proc (
dish_name IN VARCHAR,
dish_type IN VARCHAR,
dish_image IN VARCHAR) AS
BEGIN
INSERT INTO XML_TAB (XML_DATA) values(
xmltype(
'<xml>
<item>
<DISH_ID>'XML_TAB_SEQ.CURRVAL'</DISH_ID>
<DISH_NAME>'dish_name'</DISH_NAME>
<DISH_TYPE>'dish_type'</DISH_TYPE>
<DISH_IMAGE>'dish_image'</DISH_IMAGE>
</item></xml>'));
END;
这个想法是,我在PHP中使用我的表单将一些变量发送到存储过程插入此数据。插入到常规表中,然后从中获取数据以XML格式插入到XML表中也可以,但问题依然存在。
谢谢!
编辑:程序v2由于别名不起作用。
CREATE OR REPLACE PROCEDURE insert_xml_v2_proc (
dish_name IN VARCHAR2,
dish_type IN VARCHAR2,
dish_image IN VARCHAR2) AS
BEGIN
insert into xml_tab (xml_data) select xmlelement("xml", xmlelement("item",
xmlforest(XML_TAB_SEQ.nextval as dish_id,
dish_name,
dish_type,
dish_image))) xmldata from dual;
END;
/
请问你得到了什么确切的错误信息? – Boneist