Sql 带有绑定变量的DBMS_XMLGEN.GETXMLTYPE

Sql 带有绑定变量的DBMS_XMLGEN.GETXMLTYPE,sql,oracle11g,Sql,Oracle11g,请参阅下面的SQL,其工作原理与预期一致: SELECT '<System1 MAPPINGID="13" URN="2441">' || DBMS_XMLGEN.GETXMLTYPE ('SELECT * from image_data where IMAGE_DATA.DATE_CREATED >= TO_DATE(''2016-01-01'', ''YYYY-MM-DD'') AND IMAGE_DATA.DATE_CREATED <= TO_DATE(''201

请参阅下面的SQL,其工作原理与预期一致:

SELECT '<System1 MAPPINGID="13" URN="2441">' || DBMS_XMLGEN.GETXMLTYPE ('SELECT * from image_data where IMAGE_DATA.DATE_CREATED >= TO_DATE(''2016-01-01'', ''YYYY-MM-DD'') 
AND IMAGE_DATA.DATE_CREATED <= TO_DATE(''2017-01-01'', ''YYYY-MM-DD'') ').EXTRACT ('ROWSET/ROW/*').GETCLOBVAL()  || 
'</System1>'AS XMLRETURNED FROM DUAL;
选择“”|| DBMS_XMLGEN.GETXMLTYPE('SELECT*from image_data.DATE_创建的图像数据>=截止日期('2016-01-01','YYYY-MM-DD'))
和IMAGE_DATA.DATE_CREATED=TO_DATE(:DATE_CREATEDMOSTRECENT1,“YYYY-MM-DD”)

和IMAGE_DATA.DATE_CREATED在SQL*Plus和SQL Developer中,两个变量声明都会产生以下错误:

Usage: VAR[IABLE] [ <variable> [ NUMBER | CHAR | CHAR (n [CHAR|BYTE]) |
                    VARCHAR2 (n [CHAR|BYTE]) | NCHAR | NCHAR (n) |
                    NVARCHAR2 (n) | CLOB | NCLOB | BLOB | BFILE
                    REFCURSOR | BINARY_FLOAT | BINARY_DOUBLE ] ]
您当前还将绑定变量嵌入到字符串文本中,因此它们不会被解释;您需要连接绑定:

SELECT '<System1 MAPPINGID="13" URN="2441">'
  || DBMS_XMLGEN.GETXMLTYPE ('SELECT * from image_data where IMAGE_DATA.DATE_CREATED >= TO_DATE('''
    || :DATE_CREATEDMOSTRECENT1 || ''', ''YYYY-MM-DD'') AND IMAGE_DATA.DATE_CREATED <= TO_DATE('''
    || :DATE_CREATEDMOSTRECENT2 || ''', ''YYYY-MM-DD'') ').EXTRACT ('ROWSET/ROW/*').GETCLOBVAL()
    || '</System1>'AS XMLRETURNED FROM DUAL;
选择“”
||DBMS_XMLGEN.GETXMLTYPE('SELECT*from image_data.DATE_CREATED>=TO_DATE('
||:DATE_CREATEDMOSTRECENT1 | |“”、“YYYY-MM-DD”)和IMAGE_DATA.DATE_CREATED
variable DATE_CREATEDMOSTRECENT1 varchar2(1000)
exec :DATE_CREATEDMOSTRECENT1 :='2016-01-01';

PL/SQL procedure successfully completed.

variable DATE_CREATEDMOSTRECENT2 varchar2(1000)
exec :DATE_CREATEDMOSTRECENT2 :='2017-01-01';

PL/SQL procedure successfully completed.
SELECT '<System1 MAPPINGID="13" URN="2441">'
  || DBMS_XMLGEN.GETXMLTYPE ('SELECT * from image_data where IMAGE_DATA.DATE_CREATED >= TO_DATE('''
    || :DATE_CREATEDMOSTRECENT1 || ''', ''YYYY-MM-DD'') AND IMAGE_DATA.DATE_CREATED <= TO_DATE('''
    || :DATE_CREATEDMOSTRECENT2 || ''', ''YYYY-MM-DD'') ').EXTRACT ('ROWSET/ROW/*').GETCLOBVAL()
    || '</System1>'AS XMLRETURNED FROM DUAL;