Sql 无法在表中插入XML

Sql 无法在表中插入XML,sql,oracle,stored-procedures,xmltype,squirrel-sql,Sql,Oracle,Stored Procedures,Xmltype,Squirrel Sql,我有一个必须插入到生产数据库中的XML。意外删除了一行,导致批处理作业无法运行。因此,我需要插入一个XML。我在测试区域模式中有这个XML 我试图将XML从varchar2转换为clob,但不可能。然后,我被告知将XML从varchar2转换为XMLType,然后再转换为CLOB 我试过这个- CREATE or replace procedure insert_xml_data IS str varchar2(32767); BEGIN str :='<huge xml d

我有一个必须插入到生产数据库中的XML。意外删除了一行,导致批处理作业无法运行。因此,我需要插入一个XML。我在测试区域模式中有这个XML

我试图将XML从varchar2转换为clob,但不可能。然后,我被告知将XML从varchar2转换为XMLType,然后再转换为CLOB

我试过这个-

CREATE or replace procedure insert_xml_data 
 IS
   str varchar2(32767);
BEGIN
  str :='<huge xml data>';
  INSERT INTO TABLE VALUES (ID, XMLType(str));
END;
/
但是,我得到一个错误,说-

错误:ORA-06550:第2行第23940列: PLS-00103:预期出现以下>之一时遇到文件结尾符号:

*&=-+;at in是mod余数而不是rem
或者!=或者~=>=看起来您的客户机可能无法处理列号中的长字符串,而不是具体的XML问题。您在哪里以及如何做到这一点?例如,哪个客户?整根绳子有多长?您可以在没有insert语句的情况下运行它吗?为什么不能直接创建一个不相关的CLOB,但为什么要将XML数据存储为CLOB而不是XMLType?我使用的是squirrel sql。即使我对insert语句进行注释,仍然会得到相同的错误。因此,将值分配给str是主要问题。通常,我们将列类型定义为clob以存储xml。这是旧的和现有的一个。我定义了str varchar232767;并尝试将我的xml数据分配给str变量。所以,它应该没有问题。我的xml数据肯定少于32767。也许你有?我没有要测试的客户机,但是如果我人为地运行所有东西,但不包括第二个分号,我会得到相同的错误,所以这听起来似乎是合理的。如果可以,请使用不同的客户端;SQL*Plus或SQL Developer或我知道的任何其他客户机都可以处理您的代码。我成功了!我没有将其分配给varchar2,而是创建了新的clob变量并将实际的xml分配给它。没有必要做些什么。创建或替换过程insert_xml_数据为xmlData CLOB;开始xmlData:=;插入表VALUESid,xmlData;完;谢谢你的意见。我使用了sql developer。您可以发布您的解决方案作为答案吗?