salida procedimientos procedimiento parametros off funciones especiales ejemplos ejecutar developer define con caracteres caracter almacenado oracle xslt plsql whitespace html-entities

parametros - procedimientos y funciones oracle pl/sql



Problemas al insertar & nbsp; con PL/SQL Developer (4)

Tengo el siguiente script que quiero insertar en una tabla, pero estoy teniendo algunos problemas con él.

declare v_xslt9 varchar2(32767) := ''<?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="html" encoding="UTF-8" indent="yes"/> <xsl:template name="Template"> <xsl:text>Kære </xsl:text> <xsl:value-of select="/nameValueMap/entry[string=''''FIRST_NAME'''']/string[2]"/> <xsl:text>&nbsp;</xsl:text> <xsl:value-of select="/nameValueMap/entry[string=''''LAST_NAME'''']/string[2]"/></xsl:template> </xsl:stylesheet>'' begin insert into XSLT values ('''',''Note'',sysdate,v_xslt9,sysdate,''T'','''') end;

La parte de interés es la siguiente

<xsl:text>&nbsp;</xsl:text>

Estoy usando PL / SQL Developer y cuando ejecuto el script anterior, reconoce

&nbsp;

como entidad y luego tengo que escribir qué valor quiero en él. Lo que quiero es un espacio en blanco simple dentro del XSL para que el primer nombre y el apellido se separen. He intentado todas las sugerencias en el siguiente enlace: orafaq : simplemente no puedo hacer que funcione. O falla cuando intento insertar o falla cuando extraigo los datos.

¿Hay alguna manera fácil de insertar un espacio en blanco en el XSL?


Use una ventana de comando en lugar de una ventana SQL para ejecutar scripts en PL / SQL Developer. Para transformar un tipo de ventana en otro tipo, simplemente haga clic derecho en cualquier lugar de la ventana y seleccione "Cambiar ventana a" => "Ventana de comandos".

Luego ejecute su script como en SQL * Plus, en este caso con SET DEFINE OFF como la primera línea.


<xsl:text>&&nbsp;</xsl:text>

Del manual del Desarrollador PL / SQL:

Si desea utilizar un signo en el texto SQL que no se debe interpretar como una variable de sustitución, use un signo doble en su lugar.


Prueba esto:

''<xsl:text>''||unistr(''/00A0'')||''</xsl:text>''

Esta función unistr(''/00A0'') devuelve el NO-BREAK SPACE Unicode

O bien, si quiere la entidad en sí, puede intentar esto:

''<xsl:text>''||chr(38)||''nbsp;</xsl:text>''

El chr(38) devuelve un símbolo comercial literal sin intentar solicitar una entrada.


utilizar

''<xsl:text>''||''&''||''nbsp;</xsl:text>''

resolverá el problema en todas partes y para siempre, y también para usted, para cada usuario futuro.

Solo aísle el símbolo