Sql 带有绑定变量的DBMS_XMLGEN.GETXMLTYPE
请参阅下面的SQL,其工作原理与预期一致: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
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;