簡體   English   中英

具有綁定變量的DBMS_XMLGEN.GETXMLTYPE

[英]DBMS_XMLGEN.GETXMLTYPE with a bind variable

請查看下面的SQL,該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;

然后,我添加如下參數:

variable DATE_CREATEDMOSTRECENT1 varchar(1000)
exec :DATE_CREATEDMOSTRECENT1 :='2016-01-01';
variable DATE_CREATEDMOSTRECENT2 varchar(1000)
exec :DATE_CREATEDMOSTRECENT2 :='2017-01-01';

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;

第二條SQL語句存在錯誤,表明未聲明參數。 問題是什么?

您的兩個變量聲明在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 ] ]

您不能使用VARCHAR

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;

並在綁定的字符串周圍加上額外的單引號(轉義)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM