![](/img/trans.png)
[英]dbms_xmlgen.getxmltype(context) returns null when the sql table is empty
[英]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.