如何使用存储过程将CLOB值插入到oracle表中

时间:2014-12-19 07:36:47

标签: xml oracle11g clob

我正在使用Oracle 11g。我用id(int),test_xml(clob)列创建了一个表test_id。我刚刚创建了一个简单的插入过程,并尝试使用该过程向表中插入一些值。但它会产生一些错误。我不知道如何解决它。我是Oracle的新手。任何人都可以帮我解决这个问题。

我的存储程序是:

CREATE OR REPLACE 
PROCEDURE sp_insert_xml
(
p_id IN INT,
p_xml IN clob
)
AS
BEGIN
INSERT INTO TEST_ID VALUES (p_id, p_xml);
END;

它会引发错误:

[SQL] execute SP_INSERT_XML(1, '<root><CUSTOMERS><CustomerName>Company, Inc.1</CustomerName><GroupNumber>9340</GroupNumber><memberCount>6291</memberCount><OutlierPercentDifference>20</OutlierPercentDifference><ReportingPeriod>Q4 2012 - Q3 2013</ReportingPeriod><PreviousReportingPeriod>Q4 2011 - Q3 2012</PreviousReportingPeriod><ReportingYear>2013</ReportingYear></CUSTOMERS></root>')
[Err] ORA-00900: invalid SQL statement

感谢您的建议

2 个答案:

答案 0 :(得分:2)

我模拟了你的情况,它对我有用。也许是你打电话给你的程序的方式。试试这样:

begin
sp_insert_xml(1, '<root><CUSTOMERS><CustomerName>Company, Inc.1</CustomerName>
<GroupNumber>9340</GroupNumber><memberCount>6291</memberCount>
<OutlierPercentDifference>20</OutlierPercentDifference>
<ReportingPeriod>Q4 2012 - Q3 2013</ReportingPeriod>
<PreviousReportingPeriod>Q4 2011 - Q3 2012</PreviousReportingPeriod>
<ReportingYear>2013</ReportingYear></CUSTOMERS></root>');
end;

答案 1 :(得分:0)

没有execute命令。试试:

call SP_INSERT(...);

begin
   sp_insert(...);
end;
/