Vous êtes sur la page 1sur 74

10 Desarrollo de aplicaciones web PL / SQL

En este captulo se explica cmo desarrollar aplicaciones web PL / SQL, que le permitirn aprovechar su base de datos disponible en la intranet. Temas:

Descripcin general de las aplicaciones web PL / SQL Implementacin de aplicaciones web PL / SQL Usando mod_plsql pasarela de corresponder las peticiones del cliente para una aplicacin Web PL / SQL Usando Embedded Gateway PL / SQL Generando salida HTML con PL / SQL Pasar parmetros a aplicaciones web PL / SQL Realizacin de operaciones de red en PL / SQL Subprogramas

Descripcin general de las aplicaciones web PL / SQL


Normalmente, una aplicacin Web escrito en PL / SQL es un conjunto de subprogramas almacenados que interactan con los navegadores web a travs de HTTP. Un conjunto de pginas HTML generadas dinmicamente interrelacionados forma la interfaz de usuario de una aplicacin web. El flujo del programa de una aplicacin Web PL / SQL es similar a la de una secuencia de comandos PERL CGI. Los desarrolladores a menudo utilizan scripts CGI para generar pginas web de manera dinmica, pero este tipo de scripts no suelen ser ptimas para el acceso a la base de datos. La entrega de contenido Web con subprogramas almacenados PL / SQL ofrece la potencia y flexibilidad de procesamiento de base de datos. Por ejemplo, puede utilizar DML, SQL dinmico, y cursores. Tambin elimina la sobrecarga proceso de bifurcar un nuevo proceso CGI para manejar cada solicitud HTTP. La figura 10-1 ilustra el proceso genrico para una aplicacin web PL / SQL.

Figura 10-1 PL / SQL de Aplicaciones Web

Descripcin del "Web Application Figura 10-1 PL / SQL"

Implementacin de aplicaciones web PL / SQL


Se puede implementar una aplicacin basada en un navegador Web en su totalidad en PL / SQL con los siguientes componentes de base de datos Oracle:

Gateway PL / SQL Web Toolkit PL / SQL

Gateway PL / SQL
El / gateway PL SQL permite un navegador Web para invocar un subprograma almacenado PL / SQL a travs de una escucha HTTP. La pasarela es una plataforma en la que se desarrollan los usuarios PL / SQL y desplegar aplicaciones web PL / SQL. mod_plsql es una implementacin de la puerta de enlace de PL / SQL. El mdulo es un plug-in de Oracle HTTP Server y permite a los navegadores Web para invocar subprogramas almacenados PL / SQL. Oracle HTTP Server es un componente tanto de Oracle Application Server y la base de datos.
mod_plsql

El mod_plsql plug-in le permite utilizar subprogramas almacenados PL / SQL para procesar las solicitudes HTTP y generar respuestas. En este contexto, una peticin HTTP es una URL que incluya valores de los parmetros que se pasan a un subprograma almacenado. PL / SQL gateway traduce la URL, invoca al subprograma almacenado con los parmetros y devuelve la salida (normalmente HTML) para el cliente.

Algunas de las ventajas de utilizar mod_plsql sobre la forma incrustada del / gateway PL SQL son los siguientes:

Se puede ejecutar en un entorno de servidor de seguridad en el que el servidor HTTP de Oracle se ejecuta en un servidor de cortafuegos de cara al mismo tiempo la base de datos est alojado detrs de un firewall. No puede utilizar esta configuracin con la puerta de enlace integrada. La puerta de enlace incorporado no admite mod_plsql caractersticas tales como el almacenamiento en cach de HTML dinmico, la supervisin del sistema y el registro en el Formato Comn de Registro.

Embedded Gateway PL / SQL Usted puede usar una versin integrada de la pasarela PL / SQL que se ejecuta en el XML HTTP DB Listener en la base de datos. Proporciona las caractersticas bsicas de mod_plsql en la base de datos, pero no requiere el servidor HTTP de Oracle. Se configura el incrustado PL / SQL con la puerta de enlace DBMS_EPG paquete en el kit de herramientas de Web PL / SQL. Algunas de las ventajas del uso de la puerta de enlace integrada sobre mod_plsql son como sigue:

Puede invocar aplicaciones web PL / SQL, como Application Express sin necesidad de instalar Oracle HTTP Server, lo que simplifica la instalacin, configuracin y administracin de aplicaciones web basadas PL / SQL. Se utiliza el mismo mtodo de configuracin que se utiliza actualmente para entregar el contenido de Oracle XML DB, en respuesta a FTP y peticiones HTTP.

Web Toolkit PL / SQL


Este conjunto de paquetes PL / SQL es una interfaz genrica que le permite utilizar subprogramas almacenados invocados por mod_plsql en tiempo de ejecucin. En respuesta a una solicitud del explorador, una PL / SQL subprograma o actualizaciones de datos recupera de la base de datos de Oracle de acuerdo con la entrada del usuario. A continuacin, genera una respuesta HTTP al navegador, por lo general en forma de una descarga de archivos o HTML a mostrar. La API de Web Toolkit permite subprogramas almacenados para realizar acciones como las siguientes:

Obtener informacin sobre una solicitud HTTP Genera cabeceras HTTP como tipo de contenido y el tipo mime Cookies creados navegador

Genera pginas HTML

Tabla 10-1 describe los paquetes PL / SQL Web Toolkit de uso comn.

Tabla 10-1 Paquetes ms utilizadas en la Web Toolkit PL / SQL


Paquete
HTF

Descripcin de Contenidos Versiones de funcin de los subprogramas del htp paquete. Las versiones de funcin no generan directamente la produccin en una pgina Web. En lugar de ello, pasan su salida como valores de retorno a los estados que ellos invocan. Utilice estas funciones cuando debe funcionar nido llamadas. Los subprogramas que generan etiquetas HTML. Por ejemplo, el procedimiento htp . anclaje genera la etiqueta de ancla HTML, <A> . Los subprogramas que permiten la funcin de pasarela de cach PL / SQL para mejorar el rendimiento de la aplicacin Web PL / SQL. Usted puede usar este paquete para que expire-based y el almacenamiento en cach basado en la validacin en el sistema de archivos de gateway PL / SQL. Subprogramas que envan y recuperan cookies HTTP hacia y desde un navegador Web del cliente. Las cookies son cadenas de un navegador usa para mantener el estado entre llamadas HTTP. Estado puede mantenerse a lo largo de una sesin de cliente o por ms tiempo si una fecha de caducidad de la cookie est incluido. La funcin de autorizar utilizado por cookies. Subprogramas que obtienen las coordenadas donde un usuario hace clic en un imagen. Utilice este paquete cuando se tiene un mapa de imgenes cuyos vnculos de destino invocar un gateway PL / SQL. Subprogramas que imponen las estrategias de bloqueo optimista de bases de datos para evitar la prdida de actualizaciones. Actualizaciones perdidas de lo contrario, pueden ocurrir si un usuario selecciona, a continuacin, intenta actualizar una fila cuyos valores se cambiaron en el nterin por otro usuario. Los subprogramas que realizan la correspondencia de cadenas y la manipulacin de cadenas con expresiones regulares. Subprogramas utilizados por el PL / SQL de puerta de enlace para la autenticacin de las solicitudes. Subprogramas utilizados por paquete OWA_PATTERN para manipular cadenas. Tambin se puede utilizar directamente. Los siguientes tipos de subprogramas de utilidad: Utilidades de SQL dinmico para producir pginas con cdigo SQL generado dinmicamente. Utilidades HTML para recuperar los valores de las variables de

HTP

OWA_CACHE

OWA_COOKIE

OWA_CUSTOM OWA_IMAGE

OWA_OPT_LOCK

OWA_PATTERN

OWA_SEC

OWA_TEXT

OWA_UTIL

Paquete

Descripcin de Contenidos

entorno CGI y realizar las redirecciones de URL. Fecha de utilidades para la fecha correcta manipulacin. Los valores de fecha son cadenas simples en HTML, pero deben tratarse adecuadamente como una base de datos tipo de datos Oracle.

WPG_DOCLOAD

Los subprogramas que permiten descargar documentos desde un repositorio de documentos que se define mediante la configuracin del DAD.

Vea tambin:

Oracle Database paquetes PL / SQL y tipos de referencia para la sintaxis,


descripciones y ejemplos para los paquetes de Herramientas Web PL / SQL

Usando mod_plsql pasarela de corresponder las peticiones del cliente para una aplicacin Web PL / SQL
Como se explica en detalle en la Gua del usuario de Oracle HTTP Server mod_plsql , mod_plsql peticiones mapas de cliente Web a PL / SQL almacenados subprogramas a travs de HTTP. Consulte la documentacin para obtener instrucciones. Vea tambin:

Gua del usuario de Oracle HTTP Server mod_plsql para


aprender a configurar y utilizar referencia
mod_plsql

Gua de Oracle Fusion Middleware para Oracle administrador del servidor HTTP para obtener mod_plsql material de

Usando Embedded Gateway PL / SQL


Las funciones integradas de puerta de enlace muy similares a la mod_plsql puerta de enlace. Antes de utilizar la versin incorporada de la puerta de entrada, debe familiarizarse con la Gua del usuario del servidor mod_plsql Oracle HTTP . Gran parte de la informacin es la misma o similar. Temas:

Cmo Embedded Gateway PL / SQL procesa las solicitudes de cliente Instalacin de Embedded Gateway PL / SQL Configuracin Embedded Gateway PL / SQL La invocacin de PL / SQL almacenados Subprogramas A travs de Embedded Gateway PL / SQL Asegurar el acceso de la aplicacin con Embedded Gateway PL / SQL

Restricciones en Embedded Gateway PL / SQL Usando Embedded Gateway PL / SQL: Escenario

Cmo Embedded Gateway PL / SQL procesa las solicitudes de cliente


La figura 10-2 ilustra el proceso por el cual la puerta de enlace integrada trata las solicitudes HTTP de los clientes.

Client Figura 10-2 procesar solicitudes con Embedded Gateway PL / SQL

Descripcin de "Solicitudes de cliente Figura 10-2 Procesamiento con Embedded PL / SQL Gateway" La explicacin de los pasos en la Figura 10-2 es el siguiente: 1. El HTTP Listener de Oracle XML DB recibe una solicitud de un cliente para solicitar navegador para invocar un subprograma PL / SQL. El subprograma o bien se puede escribir directamente en PL / SQL o indirectamente genera

2. 3. 4. 5. 6. 7. 8.

cuando un servidor de la pgina PL / SQL se carga en la base de datos y compilado. Las rutas HTTP DB XML Listener la solicitud a la pasarela de PL / SQL incrustado como se especifica en la configuracin de asignacin de ruta virtual. La puerta de enlace integrada utiliza la informacin de la solicitud HTTP y la configuracin de puerta de enlace para determinar qu cuenta de base de datos que se utilizar para la autenticacin. La puerta de enlace integrada prepara los parmetros de llamada e invoca al subprograma PL / SQL en la aplicacin. El subprograma de PL / SQL genera una pgina HTML a partir de datos relacionales y el kit de herramientas Web PL / SQL que se accede desde la base de datos. La aplicacin enva la pgina hacia la puerta de enlace integrada. La puerta de enlace integrada enva la pgina al Listener HTTP DB XML. El XML DB HTTP Listener enva la pgina al navegador del cliente.

A diferencia mod_plsql , la puerta de enlace integrada procesa las solicitudes HTTP con el Oracle XML DB Listener. Este detector es el mismo proceso del lado del servidor como el Oracle Net Listener y soporta Oracle Net Services, HTTP y FTP. Configurar las opciones generales escucha HTTP a travs de la interfaz DB XML, que se describe en la Gua del desarrollador de Oracle XML DB . Configurar la escucha HTTP ya sea mediante el uso de Oracle Enterprise Manager o editando el xdbconfig . xml archivo. Utilice la DBMS_EPG paquete para toda la configuracin PL / SQL puerta de enlace integrada, por ejemplo, crear o establecer los atributos de un DAD.

Instalacin de Embedded Gateway PL / SQL


La puerta de entrada es necesario tener los siguientes componentes:

XML DB HTTP Listener Web Toolkit PL / SQL

El PL / SQL embebido gateway se instala como parte de Oracle XML DB. Si est utilizando una base de datos preconfigurada creado durante la instalacin o el asistente de configuracin de base de datos (DBCA), a continuacin, Oracle XML DB ya est instalado y configurado. Para obtener informacin sobre cmo agregar manualmente Oracle XML DB a una base de datos existente, consulte la Gua del desarrollador de Oracle XML DB . El kit de herramientas Web PL / SQL es parte de la instalacin estndar de la base de datos, por lo que ninguna instalacin adicional es necesaria.

Configuracin Embedded Gateway PL / SQL


Se configura mod_plsql editando los archivos de configuracin del servidor Oracle HTTP. Debido a que la puerta de enlace integrada se instala como parte de Oracle XML DB HTTP Listener, a manejar la puerta de enlace integrada como un servlet a travs de la interfaz de gestin de servlet Oracle XML DB. La interfaz de configuracin de la puerta de enlace integrada es el paquete PL / SQL DBMS_EPG . Este paquete modifica el subyacente xdbconfig . xml archivo de configuracin que utiliza XML DB. Los valores por defecto de los parmetros de configuracin de puerta de enlace integrados son suficientes para la mayora de usuarios. Esta seccin contiene los siguientes temas:

Configuracin Embedded Gateway PL / SQL: Introduccin Configuracin de la autenticacin de usuario para Embedded Gateway PL / SQL

Configuracin Embedded Gateway PL / SQL: Introduccin Como en mod_plsql , cada solicitud para un subprograma almacenado PL / SQL se asocia con una base de datos Access Descriptor (DAD) . Un padre es un conjunto de valores de configuracin utilizados para el acceso de base de datos. A DAD especifica informacin como:

La cuenta de la base de datos que se utilizar para la autenticacin El subprograma de utilizar para subir y descargar documentos

En la puerta de entrada de PL / SQL incorporado, un DAD se representa como un servlet en la configuracin Listener HTTP DB XML. Cada DAD atributo mapas para un elemento XML del archivo de configuracin xdbconfig . xml . El valor del atributo DAD corresponde al contenido del elemento. Por ejemplo, la base de datos de nombre de usuario- DAD atributo corresponde a la <database-username> elemento XML, si el valor del atributo DAD es HR corresponde a<database-username> <database-username> HR . Atributo DAD nombres distinguen entre maysculas y minsculas. Utilice la DBMS_EPG paquete para realizar las siguientes configuraciones PL / SQL incrustadas pasarela: 1. Crear una nueva DAD con el DBMS_EPG . CREATE_DAD procedimiento. 2. Establecer DAD atributos con el DBMS_EPG . SET_DAD_ATTRIBUTE procedimiento.

Todos los atributos DAD son opcionales. Si no se especifica un atributo, que tiene su valor por defecto. Tabla 10-2 enumera los atributos de puerta de enlace de PL / SQL incorporado y las correspondientes mod_plsql parmetros DAD. Los valores de enumeracin en la columna "Valores legales" se distingue entre maysculas y minsculas.

Tabla 10-2 Asignacin entre mod_plsql y Embedded Atributos Gateway PL / SQL PAP
Embedded Gateway PL / Mltipl SQL DAD e Atributo occurr. Valores legales
despus de la ciruga siempredescribeprocedimiento -modo de autenticacin

mod_plsql DAD Atributo


PlsqlAfterProcedure PlsqlAlwaysDescribeProcedur e PlsqlAuthenticationMode

No No No

Cadena Enumeracin de On, Off Enumeracin de Basic, SingleSignOn, GlobalOwa, CustomOwa, PerPackageOwa Cadena Entero sin signo Entero sin signo Cadena Entero sin signo Cadena Cadena Cadena Cadena Cadena Cadena Enumeracin de ApacheStyle,

PlsqlBeforeProcedure PlsqlBindBucketLengths

antes de la ciruga obligar cucharon longitudes bind-cuboanchos cgi-medio ambiente-list -el modo de compatibilida d base de datos de edicin base de datos de usuario de defaultpgina -path documento documento de la ciruga documentotabla-tipo estilo error

No S S S No No No No No No No No

PlsqlBindBucketWidths PlsqlCGIEnvironmentList PlsqlCompatibilityMode

PlsqlDatabaseEdition PlsqlDatabaseUsername PlsqlDefaultPage PlsqlDocumentPath PlsqlDocumentProcedure PlsqlDocumentTablename PlsqlErrorStyle

mod_plsql DAD Atributo


PlsqlExclusionList PlsqlFetchBufferSize PlsqlInfoLogging PlsqlInputFilterEnable PlsqlMaxRequestsPerSession

Embedded Gateway PL / Mltipl SQL DAD e Atributo occurr. Valores legales ModplsqlStyle, DebugStyle
exclusinlist fetch-buffersize informacin de registro input-filtro a habilitar maxpeticionespor sesin nls-idioma owa-debug a habilitar ruta-alias ruta-aliasprocedimiento solicitud de validacin de funciones sessioncookiesnombre para la gestin del estado de la sesin

S No No No No No No No No No No No

Cadena Entero sin signo Enumeracin de InfoDebug Cadena Entero sin signo Cadena Enumeracin de On, Off Cadena Cadena Cadena Cadena Enumeracin de StatelessWithResetPackageState, StatelessWithFastRestPackageSt ate, StatelessWithPreservePackageSt ate Enumeracin de Char, Raw Cadena

PlsqlNLSLanguage PlsqlOWADebugEnable PlsqlPathAlias PlsqlPathAliasProcedure PlsqlRequestValidationFunct ion PlsqlSessionCookieName

PlsqlSessionStateManagement

PlsqlTransferMode PlsqlUploadAsLongRaw

-el modo de transferencia upload-siempre-prima

No No

Los valores por defecto de los atributos DAD son suficientes para la mayora de los usuarios de la puerta de enlace integrada. mod_plsql los usuarios no necesitan los siguientes atributos:

PlsqlDatabasePassword

(porque la puerta de enlace integrada no admite inicio de sesin a bases de datos externas)
PlsqlDatabaseConnectString

Al igual que los atributos de la DAD, los parmetros globales de configuracin son opcionales. Tabla 10-3 describe los DBMS_EPG atributos globales y las correspondientes mod_plsql parmetros globales.

Tabla 10-3 Asignacin entre mod_plsql y Embedded Atributos Gateway PL / SQL globales
mod_plsql DAD Atributo
PlsqlLogLevel

Embedded Gateway PL / SQL DAD Atributo


log-level

Mltiple occurr. No No

Valores legales Entero sin signo Entero sin signo

PlsqlMaxParameters

max-parameters

Vea tambin:

Gua de Oracle Fusion Middleware para Oracle administrador del servidor HTTP para obtener descripciones detalladas de
la mod_plsql atributos DAD. Ver esta documentacin para los valores por defecto y notas de uso. Oracle Database paquetes PL / SQL y tipos de referencia para conocer la DBMS_EPG paquete Gua del desarrollador de Oracle XML DB para una cuenta del xdbconfig . xml archivo

Configuracin de la autenticacin de usuario para Embedded Gateway PL / SQL Debido a que utiliza los esquemas de autenticacin DB XML, la puerta de enlace integrada controla la autenticacin de base de datos diferente a mod_plsql .En particular, no almacena las contraseas de bases de datos en una DAD. Nota: Si desea servir a una aplicacin Web PL / SQL en Internet, pero mantener la base de datos detrs de un firewall, entonces usted no puede usar el gateway PL / SQL incrustado para ejecutar la aplicacin. Debe utilizar mod_plsql lugar. Utilice la DBMS_EPG paquete para configurar la autenticacin de base de datos. Esta seccin contiene los siguientes temas:

Configuracin esttica Autenticacin con DBMS_EPG Configuracin de la autenticacin dinmica con DBMS_EPG Configuracin de la autenticacin annima con DBMS_EPG Determinar el modo de autenticacin de un DAD Creacin y configuracin de los paps: Ejemplos Determinar el modo de autenticacin para un DAD: Ejemplo Determinar el modo de autenticacin para todos los paps: Ejemplo Mostrando PAP autorizaciones que no estn en efecto: Ejemplo Encargada del examen Embedded PL / SQL Gateway Configuration

Configuracin esttica Autenticacin con DBMS_EPG

Autenticacin esttica es para la mod_plsql usuario que almacena los nombres de usuario de base de datos y contraseas en la DAD para que no se requiere que el usuario del navegador para introducir informacin de autenticacin de base de datos. Para configurar la autenticacin esttica, siga estos pasos: 1. Inicie sesin en la base de datos como administrador XML DB (es decir, un usuario con el XDBADMIN papel asignado). 2. Cree el DAD. Por ejemplo, el siguiente procedimiento crea un DAD invoca HR_DAD y los mapas de la ruta de acceso virtual a / HRWeb /:
3. EXEC DBMS_EPG.CREATE_DAD ('HR_DAD', '/ HRWeb / *');

4. Para este paso, necesitar el ALTER CUALQUIER USUARIO privilegio del sistema. Fija el DAD atributo de base de datos-nombre de usuario a la cuenta de la base de datos cuyos privilegios debe ser utilizada por el DAD. Por ejemplo, el siguiente procedimiento especifica que el DAD llamadoHR_DAD tiene los privilegios de la HR cuenta:
5. EXEC DBMS_EPG.SET_DAD_ATTRIBUTE ('HR_DAD', 'base de datos-nombre de usuario', 'HR');

El atributo de DAD base de maysculas y minsculas.

datos-nombre de usuario

distingue entre

6. Asigne el DAD los privilegios del usuario de base de datos especificado en el paso anterior. Esta autorizacin permite a los usuarios finales para invocar procedimientos y tablas de documentos de acceso a travs de la incrustado PL / gateway SQL con los privilegios de la cuenta autorizada. Por ejemplo:
7. EXEC DBMS_EPG.AUTHORIZE_DAD ('HR_DAD', 'HR');

Como alternativa, puede cerrar la sesin como usuario con XDBADMIN privilegios, inicie sesin como el usuario de base de datos

cuyos privilegios debe ser utilizada por el DAD, y luego usar el siguiente comando para asignar estos privilegios a la DAD:
EXEC DBMS_EPG.AUTHORIZE_DAD ('HR_DAD');

Nota: Varios usuarios pueden autorizar la misma DAD. La base datos de usuario de configuracin de atributo de la DAD determina que los privilegios del usuario a utilizar.
de

A diferencia mod_plsql , la puerta de enlace integrada conecta a la base de datos como usuario especial ANNIMO , pero accede a objetos de base con los privilegios de usuario asignados a la DAD. La base de datos rechaza el acceso si el usuario del navegador intente conectarse de forma explcita con el HTTPAuthorization header. Nota: La cuenta ANNIMO est bloqueado despus de la instalacin DB XML. Si desea usar la autenticacin esttica con la pasarela de PL / SQL incorporado, entonces primero debe desbloquear esta cuenta.
Configuracin de la autenticacin dinmica con DBMS_EPG

Autenticacin dinmica es para el mod_plsql usuario que no almacena los nombres de usuario y contraseas de bases de datos en el archivo DAD. En la autenticacin dinmica, un usuario de base de datos no tiene que autorizar la puerta de enlace integrada para utilizar sus privilegios para acceder a objetos de base de datos. En su lugar, los usuarios del navegador deben proporcionar la informacin de autenticacin de base de datos a travs del esquema de autenticacin bsica HTTP. La accin de la puerta de enlace integrada depende de si la base de datos de usuario de atributo se establece para el DAD. Si el atributo no se establece, entonces la puerta de enlace integrada se conecta a la base de datos como el usuario suministrado por el cliente del explorador. Si el atributo se establece, entonces la base de datos restringe el acceso al usuario especificado en la base datos de usuario de atributo. Para configurar la autenticacin dinmica, siga estos pasos: 1. Inicie sesin en la base de datos como un administrador de base de datos XML (es decir, un usuario con el XDBADMIN papel).

de

2. Cree el DAD. Por ejemplo, el siguiente procedimiento crea un DAD invoca DYNAMIC_DAD y los mapas de la ruta de acceso virtual a / HRWeb
3. EXEC DBMS_EPG.CREATE_DAD ('DYNAMIC_DAD', '/ HRWeb / *');

4. Opcionalmente, ajuste el DAD atributo de base de datos-nombre de usuario a la cuenta de la base de datos cuyos privilegios debe ser utilizada por el DAD. El usuario del navegador le solicitar que ingrese el nombre de usuario y la contrasea de esta cuenta al acceder a la DAD. Por ejemplo, el siguiente procedimiento especifica que el DAD llamado DYNAMIC_DAD tiene los privilegios de la HR cuenta:
5. EXEC DBMS_EPG.SET_DAD_ATTRIBUTE ('DYNAMIC_DAD', 'base de datos-nombre de usuario', 'HR');

El atributo de la base de datos-nombre maysculas y minsculas. ADVERTENCIA:

de usuario

distingue entre

Las contraseas se envan a travs del esquema de autenticacin bsica HTTP no estn cifradas. Configure la puerta de enlace integrada para utilizar el protocolo HTTPS para proteger las contraseas enviadas por los clientes de explorador.
Configuracin de la autenticacin annima con DBMS_EPG

Autenticacin annima es para el mod_plsql usuario que crea un usuario de base de datos DAD especial para inicio de sesin de base de datos, pero almacena los procedimientos de solicitud y tablas de documento en un esquema y subvenciones de acceso diferente a los procedimientos y tablas de documento a PUBLIC. Para configurar la autenticacin annima, siga estos pasos: 1. Inicie sesin en la base de datos como administrador DB XML, es decir, un usuario con el XDBADMIN papel asignado. 2. Cree el DAD. Por ejemplo, el siguiente procedimiento crea un DAD invoca HR_DAD y los mapas de la ruta de acceso virtual a / HRWeb / :
3. EXEC DBMS_EPG.CREATE_DAD ('HR_DAD', '/ HRWeb / *');

4. Fija el DAD atributo ejemplo:

de base de datos-nombre de usuario

ANNIMO

. Por

5. EXEC DBMS_EPG.SET_DAD_ATTRIBUTE ('HR_DAD', 'base de datos-nombre de usuario', 'anonymous');

Tanto la base de datos-nombre maysculas y minsculas.

de usuario

ANNIMO

distinguen entre

Usted no tiene que autorizar la puerta de enlace integrada para utilizar ANNIMOS privilegios para tener acceso a objetos de base de datos, porqueANNIMO no tiene privilegios de sistema y no posee objetos de base.
Determinar el modo de autenticacin de un DAD

Si conoce el nombre de un DAD, a continuacin, el modo de autenticacin para este DAD depende de los siguientes factores:

Existe el PAP? Est la base de datos de usuario de atributo para el PAP ajustado? El DAD autorizado a utilizar el privilegio de la base de datos de usuario de usuario? Est la base de datos de usuario de atributo de la misma como uno de los usuarios autorizados a utilizar el PAP?

Tabla 10-4 muestra cmo las respuestas a las preguntas anteriores determinan el modo de autenticacin.

Tabla 10-4 Posibilidades de autenticacin para un pap


DAD existe? S S S S No establece la base de datos-nombre de usuario? S S No S (para ANNIMO ) Autoriz usuario? S No No importa No importa

Modo Esttico Dinmica restringida Dinmico Annimo N/A

Por ejemplo, suponga que crea una DAD llamado MY_DAD . Si la base de datos de nombre de usuario- atributo para MY_DAD se establece en HR , pero elHR usuario no autoriza MY_DAD , entonces el modo de autenticacin para MY_DAD es dinmico y restringido. Un usuario del navegador que intenta ejecutar un subprograma PL / SQL a travs MY_DAD se le pide que introduzca la HR nombre de usuario de base de datos y la contrasea. El DBA_EPG_DAD_AUTHORIZATION vista muestra qu usuarios no han autorizado el uso de un DAD. El DAD_NAME columna muestra el nombre de la DAD, elUSUARIO columna muestra el usuario cuyos privilegios se asignan a la DAD. El DAD autorizado podra no existir.

Creacin y configuracin de los paps: Ejemplos

El SQL * Plus script en Ejemplo 10-1 realiza lo siguiente:

Crea un DAD con la autenticacin esttica para el usuario de base de datos de recursos humanos y le asigna los privilegios de la HR cuenta, que luego lo autorice. Crea un DAD con autenticacin dinmica que no est restringida a ningn usuario. Crea un DAD con autenticacin dinmica que se limita a la HR cuenta.

Ejemplo 10-1 Creacin y configuracin DADs


REM ------------------------------------------------- -------------------REM DAD con la autenticacin esttica REM ------------------------------------------------- -------------------CONEXIN DEL SISTEMA AS SYSDBA CONTRASEA: contrasea EXEC DBMS_EPG.CREATE_DAD ('Static_Auth_DAD', '/ static / *'); EXEC DBMS_EPG.SET_DAD_ATTRIBUTE ('Static_Auth_DAD', 'base de datos-nombre de usuario', 'HR'); CONCESIN EJECUTA EN DBMS_EPG HR; REM Autorizacin CONNECT HR CONTRASEA: contrasea EXEC DBMS_EPG.AUTHORIZE_DAD ('Static_Auth_DAD'); REM ------------------------------------------------- -------------------REM DAD con la autenticacin dinmica REM ------------------------------------------------- -------------------CONEXIN DEL SISTEMA AS SYSDBA CONTRASEA: contrasea EXEC DBMS_EPG.CREATE_DAD ('Dynamic_Auth_DAD', '/ dynamic / *'); REM ------------------------------------------------- -------------------REM DAD con autenticacin dinmica restringida REM ------------------------------------------------- -------------------CONEXIN DEL SISTEMA AS SYSDBA CONTRASEA: contrasea EXEC DBMS_EPG.CREATE_DAD ('Dynamic_Auth_DAD_Restricted', '/ dynamic / *');

EXEC DBMS_EPG.SET_DAD_ATTRIBUTE ('Dynamic_Auth_DAD_Restricted', 'base de datos-nombre de usuario', 'HR');

La creacin y autorizacin de un DAD son independientes, por lo que usted puede hacer lo siguiente:

Autorizar un DAD que no existe (se puede crear ms adelante) Autorizar un DAD para que usted no es el usuario (sin embargo, la autorizacin no entra en vigor hasta que el DAD base de datos fcil de atributo se cambia a su nombre de usuario)

Ejemplo 10-2 crea una DAD con la autenticacin esttica para el usuario de base de datos de recursos humanos y le asigna los privilegios de la HR cuenta. A continuacin, las siguientes situaciones:

En lugar de autorizar que DAD, la base de datos de usuario DAD inexistente.

HR

autoriza un

Aunque el usuario podra haber hecho esto, por error, no se produce ningn error, porque el inexistente DAD podra crearse ms tarde.

El usuario de la base OE autoriza al DAD (cuya atributo se establece en HR .

base de datos fcil

de

No se produce ningn error, pero la autorizacin no entra en vigor hasta que el DAD base de datos fcil de atributo se cambia a OE .

DADs Ejemplo 10-2 Autorizar a crearse o cambiarse tarde


REM Crear DAD con la autenticacin esttica para el usuario de base de datos de recursos humanos CONEXIN DEL SISTEMA AS SYSDBA CONTRASEA: contrasea EXEC DBMS_EPG.CREATE_DAD ('Static_Auth_DAD', '/ static / *'); EXEC DBMS_EPG.SET_DAD_ATTRIBUTE ('Static_Auth_DAD', 'base de datos-nombre de usuario', 'HR'); CONCESIN EJECUTA EN DBMS_EPG HR; Usuario de base de datos REM HR autoriza DAD que no existe CONNECT HR CONTRASEA: contrasea EXEC DBMS_EPG.AUTHORIZE_DAD ('Static_Auth_DAD_Typo');

REM usuario de base de datos OE autoriza DAD con la base de datos de usuario de 'HR' CONNECT OE CONTRASEA: contrasea EXEC DBMS_EPG.AUTHORIZE_DAD ('Static_Auth_DAD');

Determinar el modo de autenticacin para un DAD: Ejemplo

Ejemplo 10-3 crea un procedimiento PL / SQL, show_dad_auth_status , que acepta el nombre de un DAD e informa de su modo de autenticacin. Si la DAD especificado no existe, el procedimiento termina con un error.

Ejemplo 10-3 Determinar el modo de autenticacin para un pap


CREAR O CAMBIAR show_dad_auth_status PROCEDIMIENTO (p_dadname VARCHAR2) ES v_daduser VARCHAR2 (32); v_cnt PLS_INTEGER; COMENZAR - Determinar usuario DAD v_daduser: = DBMS_EPG.GET_DAD_ATTRIBUTE (p_dadname, "base de datos-nombre de usuario '); - Determinar si existe autorizacin DAD DAD para el usuario SELECT COUNT (*) EN v_cnt DE DBA_EPG_DAD_AUTHORIZATION da DONDE da.DAD_NAME = p_dadname Y da.USERNAME = v_daduser; - Si existe autorizacin DAD para usuario DAD, modo de autenticacin es esttico IF (v_cnt> 0) ENTONCES DBMS_OUTPUT.PUT_LINE ( '''' | | P_dadname | | '' 'Est configurado para la autenticacin esttica para el usuario''' | | v_daduser | |'') '.'; VUELTA; END IF; - Si no existe ninguna autorizacin para el usuario DAD DAD, el modo de autenticacin es dinmica

- Determinar si la autenticacin dinmica se restringe al usuario particular IF (v_daduser IS NOT NULL) ENTONCES DBMS_OUTPUT.PUT_LINE ( '''' | | P_dadname | | '' 'Est configurado para la autenticacin dinmica para el usuario''' | | v_daduser | |'' 'solamente.'); ELSE DBMS_OUTPUT.PUT_LINE ( '''' | | P_dadname | | '' 'Est configurado para la autenticacin dinmica para cualquier usuario.'); END IF; END; /

Suponga que ha ejecutado la secuencia de comandos en el Ejemplo 10-1 para crear y configurar varios DADs. La siguiente secuencia de comandos SQL * Plus produce el resultado que se muestra:
SET serveroutput; COMENZAR show_dad_auth_status ('Static_Auth_DAD'); END; / 'Static_Auth_DAD' est configurado para la autenticacin esttica para el usuario 'HR'.

Determinar el modo de autenticacin para todos los paps: Ejemplo

El bloque annimo en Ejemplo 10-4 presenta los modos de autenticacin de todos los paps registrados. Se invoca el show_dad_auth_status procedimiento desde Ejemplo 10-3 .

Ejemplo 10-4 Mostrando el modo de autenticacin para todos los paps


DECLARAR v_dad_names DBMS_EPG.VARCHAR2_TABLE; COMENZAR DBMS_OUTPUT.PUT_LINE ('---------- Estado de autorizacin para todos los paps ----------'); DBMS_EPG.GET_DAD_LIST (v_dad_names); PARA i en 1 .. LAZO v_dad_names.count show_dad_auth_status (v_dad_names (i));

END LOOP; END; /

Si ha ejecutado la secuencia de comandos en el Ejemplo 10-1 para crear y configurar varios paps, la salida del ejemplo 10.4 es:
---------- Estado de autorizacin para todos los paps ---------'Static_Auth_DAD' est configurado para la autenticacin esttica para el usuario 'HR'. 'Dynamic_Auth_DAD' est configurado para la autenticacin dinmica para cualquier usuario. 'Dynamic_Auth_DAD_Restricted' est configurado para autenticacin dinmica para el usuario 'HR' solamente.

Mostrando PAP autorizaciones que no estn en efecto: Ejemplo

El bloque annimo en Ejemplo 10-5 informa autorizaciones DAD que son no en vigor. Una autorizacin DAD no es, en efecto, en cualquiera de las siguientes situaciones:

El usuario que autoriza la DAD no es el usuario especificado por la datos de usuario de atributo de la DAD El usuario autoriza a DAD que no existe

base de

Ejemplo 10-5 Mostrando PAP autorizaciones que no estn en efecto


DECLARAR v_dad_names DBMS_EPG.VARCHAR2_TABLE; v_dad_user VARCHAR2 (32); v_dad_found BOOLEAN; COMENZAR DBMS_OUTPUT.PUT_LINE ('---------- PAP autorizaciones no est en efecto ----------'); DBMS_EPG.GET_DAD_LIST (v_dad_names); Para R IN (SELECT * FROM DBA_EPG_DAD_AUTHORIZATION) BUCLE - lazo externo v_dad_found: = FALSE; PARA i en 1 .. v_dad_names.count BUCLE - bucle interno IF (r.DAD_NAME = v_dad_names (i)) ENTONCES v_dad_user: = DBMS_EPG.GET_DAD_ATTRIBUTE (r.DAD_NAME, "base de datos-nombre de usuario ');

- Es la base de datos de usuario de usuario para el que est autorizado PAP? IF (r.USERNAME <> v_dad_user) ENTONCES DBMS_OUTPUT.PUT_LINE ( Autorizacin DAD de'' '| | r.dad_name | | '' 'Por el usuario''' | | r.username | |'''' | | 'No es, en efecto, porque el usuario DAD es' | | '''' | | V_dad_user | |'') '.'; END IF; v_dad_found: = TRUE; SALIDA; - bucle interno END IF; END LOOP; - bucle interno - Existe El pap? SI (NO v_dad_found) ENTONCES DBMS_OUTPUT.PUT_LINE ( Autorizacin DAD de'' '| | r.dad_name | | '' 'Por el usuario''' | | r.username | | '' 'No est en vigor porque el DAD no existe.'); END IF; END LOOP; - lazo externo END; /

Si ha ejecutado la secuencia de comandos en el Ejemplo 10-2 para crear y configurar varios paps, la salida del Ejemplo 10-5 (reordenada para que quepa en la pgina) es:
---------- Las autorizaciones pap no en Efecto ---------Autorizacin DAD de 'Static_Auth_DAD' por el usuario 'OE' no est en vigor porque el usuario DAD es 'HR'. Autorizacin DAD de 'Static_Auth_DAD_Typo' por el usuario 'HR' no est en vigor porque pap no existe.

Encargada del examen Embedded PL / SQL Gateway Configuration

Cuando est conectado a la base de datos como un usuario con privilegios de sistema, el siguiente script le ayuda a examinar la configuracin del PL / gateway de SQL incorporado:
$ ORACLE_HOME / RDBMS / admin / epgstat.sql

Ejemplo 10-6 muestra la salida del el ANNIMO cuenta est bloqueada.

epgstat

sql

guin de ejemplo 10-1 cuando

Ejemplo 10-6 epgstat.sql Guin de salida para Ejemplo 10-1


SQL> @ $ ORACLE_HOME / RDBMS / admin / epgstat.sql + -------------------------------------- + | Puertos de protocolo XDB: | | XDB escucha para el protocolo | | Cuando el puerto del protocolo es distinto de cero. | + -------------------------------------- + Puerto HTTP Puerto FTP ----------------0 0 1 fila seleccionada. + --------------------------- + | Asignaciones de ruta de acceso virtual DAD | + --------------------------- + Virtual Path DAD Nombre -------------------------------------------------- -------------/ Dynamic / * Dynamic_Auth_DAD_Restricted / Static / * Static_Auth_DAD 2 filas seleccionadas. + ---------------- + | Atribuye DAD | + ---------------- + DAD Nombre DAD DAD Param Valor -------------------------------------------------- ----------------------Dynamic_Auth base de datos de usuario de HR _DAD_Restric ted Static_Auth_ base de datos de usuario de HR DAD

2 filas seleccionadas.

+ ------------------------------------------------- - + | Autorizacin DAD: | | Para utilizar la autenticacin esttica de un usuario en una DAD, | | DAD debe ser autorizado por el usuario. | + ------------------------------------------------- - + DAD nombre de usuario Nombre -------------------------------------------------- -------------Static_Auth_DAD HR OE Static_Auth_DAD_Typo HR 3 filas seleccionadas. + ---------------------------- + | Esquemas de autenticacin DAD | + ---------------------------- + DAD nombre de usuario Nombre de autenticacin Esquema -------------------------------------------------- -------------------Dynamic_Auth_DAD dinmico Dynamic_Auth_DAD_Res HR dinmico restringido tricted Static_Auth_DAD HR esttico 3 filas seleccionadas. + ------------------------------------------------- ------- + | ANNIMO condicin de usuario: | | Para utilizar la autenticacin esttica o annimos en cualquier DAD, | | La cuenta annima debe estar desbloqueado. | + ------------------------------------------------- ------- + Estado de base de datos del usuario ----------------------------------ANNIMO VENCIDO Y BLOQUEADO 1 fila seleccionada. + ------------------------------------------------- ------------------ + | Acceso annimo al repositorio XDB: | | Para permitir el acceso del pblico a los repositorios XDB sin autenticacin, |

| Acceso annimo al repositorio debe ser permitido. | + ------------------------------------------------- ------------------ + Permitir el acceso annimo repositorio? ---------------------------------falso 1 fila seleccionada.

La invocacin de PL / SQL almacenados Subprogramas A travs de Embedded Gateway PL / SQL


Los pasos bsicos para invocar subprogramas PL / SQL a travs de la puerta de enlace PL / SQL incorporado son los mismos que para el mod_plsql puerta de enlace. Consulte la Gua del usuario de Oracle HTTP Server mod_plsql para obtener instrucciones. Debe adaptar los mod_plsql instrucciones ligeramente para su uso con la puerta de enlace integrada. Por ejemplo, invocar la puerta de enlace integrada en un navegador escribiendo la direccin URL con el siguiente formato:
protocolo :/ / hostname [: puerto] / ruta virt / [!..? [] [esquema] [paquete] proc_name [query_str]]

El marcador de posicin virt-path representa la ruta de acceso virtual que configur en DBMS_EPG . CREATE_DAD . El mod_plsql documentacin utilizaDAD_location lugar de virt-path . Los siguientes temas documentados en el primer captulo de la Gua del usuario de Oracle HTTP Server mod_plsql se aplican igualmente a la puerta de enlace integrada:

Modalidad de transaccin Los tipos de datos soportados Esquema de paso de parmetros La carga de archivos y soporte de descarga Camino-aliasing Variables de la interfaz de puerta de enlace comn (CGI) de entorno

Asegurar el acceso de la aplicacin con Embedded Gateway PL / SQL


La puerta de enlace integrada comparte el mismo mecanismo de proteccin con mod_plsql . Consulte la Gua del usuario de Oracle HTTP Server mod_plsqlpara obtener instrucciones.

Restricciones en Embedded Gateway PL / SQL


mod_plsql restricciones documentados en el primer captulo de la Gua del usuario de Oracle HTTP Server mod_plsql se aplican igualmente a la puerta de

Los

enlace integrada. Adems, la versin incorporada de la puerta de enlace no admite las siguientes caractersticas:

Dinmica cach HTML Monitorizacin de la instalacin Oracle Application Server Single Sign-On

Usando Embedded Gateway PL / SQL: Escenario


En esta seccin se muestra cmo escribir una aplicacin sencilla que consulta la hora . empleados de mesa y ofrece un flujo de HTML para un navegador web a travs de la pasarela de PL / SQL. Se supone que tiene tanto DB XML y los esquemas de ejemplo instalados. Para escribir y ejecutar el programa, siga estos pasos: 1. Inicie sesin en la base de datos como usuario con ALTER USER privilegios y asegrese de que la cuenta de la base de datos ANNIMO est desbloqueado. El ANNIMO cuenta, que est bloqueado por omisin, es necesario para la autenticacin esttica. Si la cuenta est bloqueada, a continuacin, utilizar la siguiente instruccin SQL para desbloquearlo:
2. ALTER Cuenta Usuario Annimo UNLOCK;

3. Inicie sesin en la base de datos como administrador DB XML, es decir, un usuario con el XDBADMIN papel. Para determinar qu se concedieron los usuarios y roles del consultar el diccionario de datos:
SELECT * DE DBA_ROLE_PRIVS DONDE GRANTED_ROLE = 'XDBADMIN'; XDADMIN

funcin,

4. Cree el DAD. Por ejemplo, el siguiente procedimiento crea un DAD invoca HR_DAD y los mapas de la ruta de acceso virtual a / PLSQL / :
5. EXEC DBMS_EPG.CREATE_DAD ('HR_DAD', '/ PLSQL / *');

6. Fija el DAD atributo de base de datos-nombre de usuario para el usuario de base de datos cuyos privilegios debe ser utilizada por el DAD. Por ejemplo, el siguiente procedimiento especifica que el DAD HR_DAD accede a objetos de base de datos con los privilegios del usuario HR :

7. EXEC DBMS_EPG.SET_DAD_ATTRIBUTE ('HR_DAD', 'base de datos-nombre de usuario', 'HR');

El atributo de la base de datos-nombre maysculas y minsculas.

de usuario

distingue entre

8. Subvencin EJECUTAR privilegio al usuario de base de datos cuyos privilegios deben ser utilizados por el DAD (para que l o ella puede autorizar la DAD). Por ejemplo:
9. CONCESIN EJECUTA EN DBMS_EPG HR;

10. Cierre la sesin como el administrador de DB XML y acceder a la base de datos como el usuario de base de datos cuyos privilegios debe ser utilizada por el DAD (por ejemplo, recursos humanos ). 11. Autorizar el gateway PL / SQL incrustado para invocar procedimientos y tablas de documentos de acceso a travs de la DAD. Por ejemplo:
12. EXEC DBMS_EPG.AUTHORIZE_DAD ('HR_DAD');

13. Procedimiento Crear una muestra de PL / SQL almacenado invocado print_employees . El siguiente programa crea una pgina HTML que incluye el conjunto de resultados de una consulta de hr . empleados :
14. CREAR O CAMBIAR print_employees procedimiento es 15. 16. 17. 18. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. Emp_cursor cursor se Last_name SELECT, first_name DE hr.employees ORDER BY apellidos; Htp.print ('<html>'); Htp.print ('<head>'); Htp.print ('<meta http-equiv="Content-Type" content="text/html">'); Htp.print ('<title> Lista de Empleados </ title>'); Htp.print ('</ head>'); Htp.print ('<body TEXT="#000000" bgcolor="#FFFFFF">'); Htp.print ('<h1> Lista de Empleados </ h1>'); Htp.print ('<table width="40%" border="1">'); Htp.print ('<tr>'); Htp.print ('<th align="left"> Apellido </ th>'); Htp.print ('<th align="left"> Nombre </ th>'); Htp.print ('</ tr>'); PARA emp_record EN BUCLE emp_cursor Htp.print ('<tr>'); Htp.print ('<td>' | | emp_record.last_name | | '</ td>'); Htp.print ('<td>' | | emp_record.first_name | | '</ td>'); END LOOP; Htp.print ('</ table>'); Htp.print ('</ body>');

19. COMENZAR

39. 41. /

Htp.print ('</ html>');

40. END;

42. Asegrese de que el oyente Oracle Net puede aceptar peticiones HTTP. Usted puede determinar el estado del oyente en Linux y UNIX ejecutando el siguiente comando en el smbolo del sistema:
43. estado lsnrctl | grep HTTP

Salida (reformateado de una sola lnea para mltiples lneas debido a las limitaciones de tamao de pgina):
(DESCRIPTION = (DIRECCIN = (PROTOCOLO = TCP) (ANFITRIN = example.com) (PORT = 8080)) (Presentacin = HTTP) (Sesin = RAW) )

Si usted no ve el servicio HTTP comenz, entonces se puede establecer lo siguiente en su archivo de parmetros de inicializacin (reemplazandolistener_name con el nombre de su interlocutor local de Oracle Net), a continuacin, reinicie la base de datos y el oyente:
despachadores = "(PROTOCOLO = TCP)" local_listener = listener_name

44. Ejecute el print_employees programa desde el navegador Web. Por ejemplo, puede utilizar la siguiente URL, sustituyendo anfitrin con el nombre de su equipo host y el puerto con el valor del PUERTO parmetro en el paso anterior:
45. http:// anfitrin : puerto / PLSQL / print_employees

Por ejemplo, si su proveedor de alojamiento es HTTP es 8080 , a continuacin, introduzca:


http://example.com:8080/plsql/print_employees

de prueba

com

y el puerto

El navegador Web devuelve una pgina HTML con una tabla que incluye el nombre y apellido de cada empleado en la hora . empleados mesa.

Generando salida HTML con PL / SQL


Tradicionalmente, la funcin de las aplicaciones web PL / SQL utilizacin requiere para generar cada etiqueta HTML para su presentacin. Estas funciones forman parte de los paquetes Web Toolkit PL / SQL que vienen con la base de datos

Oracle. Ejemplo 10-7 ilustra cmo generar una pgina HTML simple llamando a los HTP funciones que corresponden a cada etiqueta HTML.

Ejemplo 10-7 Uso de las funciones de HTP para generar etiquetas HTML
CREAR O CAMBIAR html_page PROCEDIMIENTO ES COMENZAR HTP.HTMLOPEN; - genera <HTML> HTP.HEADOPEN; - genera <HEAD> HTP.TITLE ("Ttulo"), - genera <TITLE> Hello </ TITLE> HTP.HEADCLOSE; - genera </ HTML> - Genera <BODY TEXT="#000000" bgcolor="#FFFFFF"> HTP.BODYOPEN (cattributes => 'TEXT = "# 000000" BGCOLOR = "# FFFFFF"'); - Genera <H1> Apartados del archivo HTML </ H1> HTP.HEADER (1 'Rbrica Archivo HTML') HTP.PARA; - genera <P> Htp.print ('. Parte del texto en el archivo HTML'); HTP.BODYCLOSE; - genera </ BODY> HTP.HTMLCLOSE; - genera </ HTML> END; /

Una alternativa a la realizacin de llamadas de funcin que corresponden a cada etiqueta es utilizar la HTP . IMPRIMIR funcin para imprimir el texto y las etiquetas juntos. Ejemplo 10-8 ilustra esta tcnica.

Ejemplo 10-8 Uso htp.print para generar etiquetas HTML


CREAR O CAMBIAR html_page2 PROCEDIMIENTO ES COMENZAR Htp.print ('<html>'); Htp.print ('<head>'); Htp.print ('<meta http-equiv="Content-Type" content="text/html">'); Htp.print ('Ttulo <title> del archivo HTML </ title>'); Htp.print ('</ head>'); Htp.print ('<body TEXT="#000000" bgcolor="#FFFFFF">'); Htp.print ('<H1> Apartados del archivo HTML </ h1>'); Htp.print ('<p> Parte del texto en el archivo HTML.'); Htp.print ('</ body>'); Htp.print ('</ html>'); END;

Captulo 11, "El desarrollo de PL / SQL Server Pages", describe un mtodo adicional para la entrega utilizando PL / SQL para generar contenido HTML. Pginas de servidor de PL / SQL que permite construir sobre su conocimiento de las etiquetas HTML y evitar el aprendizaje de un nuevo conjunto de llamadas a funciones. En una aplicacin escrita como un conjunto de PL / SQL Server Pages, puede seguir utilizando las funciones de la / SQL Web Toolkit PL para hacer lo siguiente:

Simplificar la tramitacin involucrados en la presentacin de tablas Almacenar datos persistentes (galletas) Trabajar con las partes internas del protocolo CGI

Pasar parmetros a aplicaciones web PL / SQL


Para que sean tiles en una amplia variedad de situaciones, una aplicacin web debe ser lo suficientemente interactiva para permitir que las elecciones del usuario. Para mantener la atencin de los internautas impacientes, simplificar la interaccin de manera que los usuarios pueden especificar estas opciones de manera muy sencilla, sin la toma de decisiones o la excesiva entrada de datos. Los principales mtodos de pasar parmetros a las aplicaciones web PL / SQL son:

El uso de etiquetas de formulario HTML. El usuario rellena un formulario en una pgina Web, y todos los datos y las opciones se transmiten a un subprograma almacenado cuando el usuario hace clic en el Enviar botn en la pgina. Hard-codificado en la URL. El usuario hace clic en un enlace, y un conjunto de parmetros predefinidos se transmiten a un subprograma almacenado.Tpicamente, se incluyen enlaces separados en su pgina Web para todas las opciones que el usuario podra desear.

Temas:

Pasar parmetros de lista y Desplegable-List de un formulario HTML Pasando Radio Button y Checkbox parmetros desde un formulario HTML Pasar parmetros de Entrada y de campo de un formulario HTML Pasar parmetros ocultos de un formulario HTML Cargar un archivo desde un formulario HTML El envo de un formulario HTML Completado Manejo de entrada que falta de un formulario HTML Mantenimiento de la informacin de estado entre pginas Web

Pasar parmetros de lista y Desplegable-List de un formulario HTML


Los cuadros de lista y listas desplegables se implementan con la etiqueta HTML SELECT . Utilice un cuadro de lista para un gran nmero de opciones o para permitir selecciones mltiples. Los cuadros de lista son buenos para mostrar los elementos en orden alfabtico para que los usuarios pueden encontrar un artculo rpidamente sin necesidad de leer todas las opciones. Utilice una lista desplegable en las siguientes situaciones:

Hay un pequeo nmero de opciones Espacio de pantalla es limitado. Las opciones son en un orden inusual.

El desplegable capta la atencin de los usuarios de primera vez y los hace leer los artculos. Si mantiene las opciones y ordena consistente, entonces los usuarios pueden memorizar el movimiento de la seleccin de un elemento de la lista desplegable, lo que les permite realizar selecciones de forma rpida a medida que adquieren experiencia. Ejemplo 10-9 muestra una lista desplegable simple.

Ejemplo 10-9 HTML lista desplegable


<form> <select name="seasons"> <option value="winter"> Invierno <option value="spring"> Primavera <option value="summer"> Verano <option value="fall"> Otoo </ Select>

Pasando Radio Button y Checkbox parmetros desde un formulario HTML


Los botones de radio pasan ya sea un valor nulo (si ninguno de los botones de opcin de un grupo est marcada), o el valor especificado en el botn de radio que se comprueba. Para especificar un valor predeterminado para un conjunto de botones de radio, puede incluir la COMPROBADO atributo en uno de los ENTRADA etiquetas, o incluir una DEFAULT clusula en el parmetro dentro del subprograma almacenado. Cuando se crea un grupo de botones de opcin, asegrese de incluir una opcin que indica

"sin preferencia", porque una vez que el usuario selecciona un botn de opcin, todava puede seleccionar uno diferente, pero no pueden borrar la seleccin completamente. Por ejemplo, incluir una seleccin de "no me importa" o "No s", junto con "S" y "No" opciones, en caso de que alguien hace una seleccin y luego se da cuenta que estaba mal. Las casillas de verificacin necesitan un tratamiento especial, debido a que su subprograma almacenado puede recibir un valor nulo, un solo valor o de varios valores: Todas las casillas de verificacin con el mismo NOMBRE atribuyen integrar un grupo de casillas de verificacin. Si ninguna de las casillas de verificacin en un grupo est marcada, el subprograma almacenado recibe un valor nulo para el parmetro correspondiente. Si una casilla de verificacin en un grupo est marcada, el subprograma almacenado recibe una sola VARCHAR2 parmetro. Si ms de una casilla de verificacin en un grupo est marcada, el subprograma almacenado recibe un parmetro con el tipo PL / SQL TABLA DE VARCHAR2 .Debe declarar un tipo como TABLA DE VARCHAR2 , o utilizar uno predefinido como OWA_UTIL . IDENT_ARR . Para recuperar los valores, utilice un bucle:
CREAR O CAMBIAR handle_checkboxes PROCEDIMIENTO (Casillas owa_util.ident_arr) AS COMENZAR ... PARA i en 1 .. checkboxes.count LAZO htp.print ('<p> valor Checkbox:' | | casillas de verificacin (i)); END LOOP; ... END; /

Pasar parmetros de Entrada y de campo de un formulario HTML


Campos de entrada requieren la mayor validacin, ya que un usuario puede introducir datos en un formato incorrecto, fuera de rango, y as sucesivamente. Si es posible, validar los datos en el lado del cliente usando JavaScript en el cliente, y dar formato correctamente para el usuario o incitarlos a entrar de nuevo. Por ejemplo:

Usted puede evitar que el usuario la introduccin de caracteres alfabticos en un campo de entrada numrico, o de la introduccin de caracteres, una vez que se alcanza un lmite de longitud. Es posible eliminar el silencio espacios y guiones de un nmero de tarjeta de crdito si el subprograma almacenado espera que el valor en ese formato. Usted puede informar al usuario de forma inmediata cuando se escriba un nmero que es demasiado grande, de modo que puedan volver a escribirla.

Debido a que no siempre se puede confiar en esa validacin para tener xito, codificar los subprogramas almacenados para hacer frente a estos casos de todos modos. En lugar de obligar al usuario a utilizar el Back botn cuando entran en datos errneos, mostrar una pgina con un mensaje de error y la forma original con todos los otros valores llenados pulg Para obtener informacin confidencial, como contraseas, una forma especial del campo de entrada, <INPUT TYPE=PASSWORD> , oculta el texto tal como se teclea pulg El procedimiento en el Ejemplo 10-10 acepta dos cadenas como entrada. La primera vez que se invoca el procedimiento, el usuario ve un sencillo formulario pide los valores de entrada. Cuando el usuario enva la informacin, el mismo procedimiento se invoca de nuevo para comprobar si la entrada es correcta. Si la entrada est bien, el procedimiento procesa. Si no, el procedimiento solicita nueva entrada, llenando en los valores originales para el usuario.

Ejemplo 10-10 Pasar parmetros de Entrada y de campo de un formulario HTML


CREATE TABLE name_zip_table (nombre VARCHAR2 (100), nmero de cdigo postal); - Guardar un nombre y cdigo postal asociado a la base de datos. CREAR O CAMBIAR associate_name_with_zipcode PROCEDIMIENTO (Nombre VARCHAR2 DEFAULT NULL, VARCHAR2 DEFAULT NULL zip) AS COMENZAR - Cada campo de entrada debe contener un valor. Cdigo postal debe ser de 6 caracteres. - (En un programa real de llevar a cabo ms extensa de cheques.) Si el nombre no es nulo y postal NO ES NULO Y longitud (zip) = 6 ENTONCES INSERT INTO VALORES name_zip_table (nombre, cdigo postal); Htp.print ('<p> La persona | | Nombre | |' tiene el cdigo postal '| | zip | |'. ');

- Si la entrada estaba bien, no sigas leyendo. Usuario no ve la forma de nuevo. VUELTA; END IF; - Si el usuario introduce datos incompletos o incorrectos, aparece el mensaje de error. SI (nombre es nula y zip IS NOT NULL) OR (nombre NO ES NULO Y zip IS NULL) OR (zip NO ES NULO Y longitud (zip)! = 6) ENTONCES Htp.print ('<p> <b> Por favor, vuelva a introducir los datos. Rellene todos los campos, y use el cdigo postal de 6 dgitos </ b>. ') END IF; - Si el usuario introduce datos o datos incorrectos, el mensaje de error espectculo - Y hacer formulario invocar mismo procedimiento para comprobar los nuevos valores de entrada. HTP.FORMOPEN ('HR.associate_name_with_zipcode', 'GET'); Htp.print ('<p> Entrar su nombre: </ td>'); Htp.print ('<td Valign=center> <input type=text name=name value="' || nombre ||'">'); Htp.print ('<p> Ingrese su cdigo postal: </ td>'); Htp.print ('<td Valign=center> <input type=text name=zip value="' || zip ||'">'); HTP.FORMSUBMIT (NULL, 'Enviar'); HTP.FORMCLOSE; END; /

Pasar parmetros ocultos de un formulario HTML


Una tcnica para pasar informacin a travs de una secuencia de subprogramas almacenados, sin que el usuario para especificar las mismas opciones cada vez, es para incluir parmetros ocultos en la forma que invoca un subprograma almacenado. El primer subprograma almacenado coloca la informacin, tales como nombre de usuario, en el formulario HTML que genera. El valor del parmetro oculto se pasa a la siguiente subprograma almacenado, como si el usuario haba entrado en ella a travs de un botn de radio o campo de entrada.

Otras tcnicas para la transmisin de informacin de un subprograma almacenado a otro incluyen:

El envo de una "cookie" que contiene la informacin persistente en el explorador. El navegador enva entonces esta misma informacin de nuevo al servidor cuando se accede a otras pginas web desde el mismo sitio. Las cookies se establecen y se recuperan a travs de las cabeceras HTTP que se transfieren entre el navegador y el servidor web antes de que el texto HTML de cada pgina web. El almacenamiento de la informacin en la base de datos, donde ms tarde subprogramas almacenados pueden recuperarla. Esta tcnica implica cierta sobrecarga adicional en el servidor de base de datos, y usted todava tiene que encontrar una manera de hacer un seguimiento de cada usuario en forma de mltiples usuarios acceden al servidor al mismo tiempo.

Cargar un archivo desde un formulario HTML


Usted puede usar un formulario HTML para elegir un archivo en un sistema cliente, y la transfiere al servidor. Un subprograma almacenado puede insertar el archivo en la base de datos como un CLOB , BLOB , o de otro tipo que puede almacenar grandes cantidades de datos. El kit de herramientas Web PL / SQL y el gateway PL / SQL tiene la idea de una "mesa de documentos" que mantiene los archivos subidos. Vea tambin:

Gua del usuario mod_plsql

El envo de un formulario HTML Completado


De manera predeterminada, un formulario HTML debe tener una Submit botn, que transmite los datos del formulario a un subprograma almacenado o un programa CGI. Puede etiquetar este botn con el texto de su eleccin, como "Buscar", "Registro", y as sucesivamente. Puede tener varias formas en la misma pgina, cada una con sus propios elementos de formulario y Presentar botn. Usted puede incluso tener formas compuesto enteramente de parmetros ocultos, donde el usuario no tiene ms remedio que hacer clic en el botn. Uso de JavaScript u otros lenguajes de script, se puede acabar con el botn Enviar y tienen la forma presentada en respuesta a alguna otra accin, como la seleccin de una lista desplegable. Esta tcnica es mejor cuando el usuario slo tiene una sola seleccin, y la etapa de confirmacin de la Submit botn no es esencial.

Manejo de entrada que falta de un formulario HTML


Cuando se enva un formulario HTML, el subprograma almacenado recibe parmetros nulos para todos los elementos de forma que no se llenan pulg Por ejemplo, los parmetros nulos pueden ser el resultado de un campo de entrada vaco, comprob un conjunto de casillas de verificacin, botones de radio, o elementos de lista con ninguno , o una VALOR parmetro de "" (comillas vacas). Independientemente de cualquier validacin de lo que haces en el lado del cliente, siempre cdigo de subprogramas para manejar la posibilidad de que algunos parmetros son nulos almacenados:

Utilice un DEFAULT clusula en todas las declaraciones de parmetros, para evitar una excepcin cuando el subprograma almacenado se invoca con un parmetro de formulario que falta. Usted puede establecer el valor predeterminado de cero para los valores numricos (cuando eso tiene sentido), y usar DEFAULT NULL cuando se quiere comprobar si el usuario realmente especifica un valor. Antes de utilizar un valor del parmetro de entrada que tiene un DEFAULT NULL declaracin, comprobar si es nulo. Hacer que el subprograma genera resultados razonables, incluso cuando se especifican no todos los parmetros de entrada. Puede retirarse de algunas secciones de un informe, o mostrar una cadena de texto o una imagen en un informe para indicar que no se especifican los parmetros. Proporciona una forma para llenar los valores perdidos y ejecute el subprograma almacenado de nuevo, directamente desde la pgina de resultados.Por ejemplo, incluir un enlace que invoca el mismo subprograma almacenado con un parmetro adicional, o mostrar el formulario original con sus valores introducidos en el marco de la salida.

Mantenimiento de la informacin de estado entre pginas Web


Las aplicaciones web estn particularmente preocupados con la idea de Estado , el conjunto de datos que est al da en un momento particular en el tiempo.Es fcil perder la informacin de estado cuando se cambia de una pgina web a otra, lo que podra resultar en que pide al usuario tomar las mismas decisiones una y otra vez. Puede pasar informacin de estado entre pginas Web dinmicas mediante formularios HTML. La informacin que se pasa como un conjunto de pares de nombre-valor, que se convierten en los parmetros a subprogramas almacenados para usted.

Si el usuario tiene que seleccionar varias opciones, o una seleccin de muchas opciones, o es importante para evitar una seleccin accidental, utilice un formulario HTML. Despus de que el usuario realiza y examina todas las opciones, se confirman las opciones con el Enviar botn. Las pginas subsiguientes pueden utilizar formularios con parmetros ocultos ( <input type=hidden> tags) para pasar estas opciones de una pgina a la siguiente. Si el usuario slo est considerando una o dos opciones, o los puntos de decisin se encuentran dispersas en la pgina Web, usted puede ahorrar al usuario de caza alrededor de la Submit botn mediante la representacin de acciones como hipervnculos e incluyendo cualquier par de nombre y valor necesarios en la consulta string (la parte despus de la ? en un URL). Una forma alternativa a la informacin principal del estado es utilizar Oracle Application Server y su mod_ose mdulo. Este enfoque le permite almacenar la informacin de estado en variables de paquete que quedan disponibles como un usuario se mueve alrededor de un sitio Web. Vea tambin: La documentacin de Oracle Application Server fijado en http://www.oracle.com/technology/documentation

Realizacin de operaciones de red en PL / SQL Subprogramas


Oracle ofrece paquetes que permiten a PL / SQL subprogramas para realizar las siguientes operaciones de la red:

Envo de correo electrnico desde PL / SQL Obtener un Nombre de host o direccin de PL / SQL Usar conexiones TCP / IP de PL / SQL Recuperando Realizar URL HTTP de PL / SQL Uso de tablas, mapas de imgenes, cookies, y variables CGI de PL / SQL

Envo de correo electrnico desde PL / SQL


Usando el UTL_SMTP paquete, un subprograma PL / SQL puede enviar correo electrnico, como en el ejemplo 10-11 .

Ejemplo 10-11 Envo de correo electrnico desde PL / SQL


SQL> CREATE OR REPLACE send_test_message PROCEDIMIENTO 2 IS 3 mailhost VARCHAR2 (64): = 'mailhost.example.com';

4 remitente VARCHAR2 (64): = 'me@example.com'; 5 destinatario VARCHAR2 (64): = 'you@example.com'; 6 8 9 10 11 12 13 14 (13)); 15 16 17 18 - Si el mensaje fuera en cadena nica, open_data (), write_data (), 19 - y close_data () podra ser en una sola llamada a los datos (). 20 21 UTL_SMTP.QUIT (mail_conn); 22 EXCEPCIN 23 CUANDO OTROS ENTONCES 24 - Insertar el cdigo de control de errores aqu 25 NULL; 26 END; 27 / Procedimiento creado. SQL> UTL_SMTP.WRITE_DATA (mail_conn, '. sta es la lnea 2' | | chr (13 )); UTL_SMTP.CLOSE_DATA (mail_conn); UTL_SMTP.OPEN_DATA (mail_conn); UTL_SMTP.WRITE_DATA (mail_conn: 'Este es un mensaje de prueba.' | | chr UTL_SMTP.CONNECTION mail_conn; mail_conn: = utl_smtp.open_connection (mailhost, 25); - 25 es el puerto UTL_SMTP.HELO (mail_conn, mailhost); UTL_SMTP.MAIL (mail_conn, remitente); UTL_SMTP.RCPT (mail_conn, receptor); 7 EMPEZAR

Vea tambin:

Base de datos Oracle PL / SQL paquetes y tipos de referencia para obtener


informacin detallada sobre el
UTL_SMTP

paquete

Obtener un Nombre de host o direccin de PL / SQL


Usando el UTL_INADDR paquete, un subprograma PL / SQL puede determinar el nombre de host del sistema local o la direccin IP de un nombre de host determinado. Vea tambin:

Base de datos Oracle PL / SQL paquetes y tipos de referencia para obtener


informacin detallada sobre el
UTL_INADDRpaquete

Usar conexiones TCP / IP de PL / SQL

Usando el UTL_TCP paquete, un subprograma PL / SQL puede abrir conexiones TCP / IP a los sistemas de la red, y leer o escribir a las tomas correspondientes. Vea tambin:

Base de datos Oracle PL / SQL paquetes y tipos de referencia para obtener


informacin detallada sobre el
UTL_TCP

paquete

Recuperando Realizar URL HTTP de PL / SQL


Usando el

UTL_HTTP

paquete, un Subprograma PL / SQL puede hacer lo siguiente:

Recuperar el contenido de un URL HTTP Los contenidos suelen ser en forma de texto etiquetado en HTML, pero puede ser cualquier tipo de archivo que se puede descargar desde un servidor Web (por ejemplo, texto plano o una imagen JPEG).

Detalles de la sesin HTTP de control (como los encabezados, cookies, redirecciones, servidores proxy, IDs y contraseas para sitios protegidos, y los parmetros CGI) Acelerar mltiples accesos a la misma pgina web, utilizando HTTP 1.1 conexiones persistentes

Un subprograma PL / SQL puede construir e interpretar las direcciones URL para el uso con el UTL_HTTP paquete mediante la funcin UTL_URL . ESCAPE yUTL_URL . Unescape . El / procedimiento PL SQL en Ejemplo 10-12 utiliza el recuperar el contenido de un URL HTTP.
UTL_HTTP

paquete para

Ejemplo 10-12 Recuperando HTTP URL Contenido de PL / SQL


SQL> CREATE OR REPLACE show_url PROCEDIMIENTO 2 (url EN VARCHAR2, 3 usuario varchar2 DEFAULT NULL 4 password EN VARCHAR2 DEFAULT NULL) 5 AS 6 7 UTL_HTTP.REQ REQ; resp UTL_HTTP.RESP;

8 nombre VARCHAR2 (256); 9 valor VARCHAR2 (1024); 10 datos VARCHAR2 (255); 11 my_scheme VARCHAR2 (256); 12 my_realm VARCHAR2 (256);

13 BOOLEAN my_proxy; 14 COMENZAR 15 - Al pasar a travs de un firewall, pasar las solicitudes a travs de este host. 16 - Especificar los sitios dentro del firewall que no necesitan el host proxy. 17 18 19 20 - Hacer UTL_HTTP no levantar una excepcin para 4xx y 5xx cdigos de estado, 21 - en lugar de slo devolver el texto de la pgina de error. 22 23 24 25 - Inicio de la recuperacin de esta pgina Web. 26 27 28 - Identifquese usted. 29 - Algunos sitios sirven pginas especiales para determinados navegadores. 30 31 32 - ID de usuario y contrasea Especifique las pginas que lo requieran. 33 IF (nombre de usuario IS NOT NULL) ENTONCES 34 36 37 - Comienza la recepcin del texto HTML. 38 39 40 - Mostrar cdigos de estado y razn frase de la respuesta. 41 DBMS_OUTPUT.PUT_LINE ('cdigo de respuesta HTTP de estado:' | | resp.status_code); 42 DBMS_OUTPUT.PUT_LINE 43 ("razn de respuesta HTTP frase: '| | resp.reason_phrase); 44 45 - Puedes buscar error del lado del cliente y reportarlo. 46 IF (resp.status_code> = 400) AND (resp.status_code <= 499) ENTONCES 47 48 - Detectar si la pgina est protegido por contrasea 49 - y no proporcion la autorizacin correcta. 50 51 52 IF (resp.status_code = UTL_HTTP.HTTP_UNAUTHORIZED) ENTONCES UTL_HTTP.GET_AUTHENTICATION (resp, my_scheme, my_realm, my_proxy); resp: = UTL_HTTP.GET_RESPONSE (req); UTL_HTTP.SET_AUTHENTICATION (req, nombre de usuario, contrasea); 35 END IF; UTL_HTTP.SET_HEADER (req, 'User-Agent', 'Mozilla/4.0'); req: = UTL_HTTP.BEGIN_REQUEST (url); UTL_HTTP.SET_RESPONSE_ERROR_CHECK (FALSO); UTL_HTTP.SET_PROXY ('proxy.example.com', 'corp.example.com');

53 IF (my_proxy) ENTONCES 54 DBMS_OUTPUT.PUT_LINE ('servidor proxy Web est protegido.');

55 DBMS_OUTPUT.PUT ('Por favor, facilite la necesaria' | | my_scheme | | 56 'autenticacin de usuario / contrasea para el reino' | | my_realm | | 57 'para el servidor proxy.'); 58 ELSE 59 DBMS_OUTPUT.PUT_LINE (pgina Web '| | url | |' est protegido. '); 60 DBMS_OUTPUT.PUT ('Por favor, suministra la necesaria' | | my_scheme | | 61 'autenticacin de usuario / contrasea para el reino' | | my_realm | | 62 'de la pgina web.'); 63 END IF; 64 ELSE 65 DBMS_OUTPUT.PUT_LINE ('. Compruebe la direccin URL'); 66 END IF; 67 68 70 71 - Puedes buscar error de servidor y reportarlo. 72 ELSIF (resp.status_code> = 500) AND (resp.status_code <= 599) ENTONCES 73 DBMS_OUTPUT.PUT_LINE ('Comprobar si el sitio Web es hasta.'); 74 UTL_HTTP.END_RESPONSE (resp); 75 VUELTA; 76 END IF; 77 78 - lneas de encabezado HTTP contienen informacin acerca de las cookies, juegos de caracteres, 79 - y los dems datos que el cliente y el servidor pueden utilizar para personalizar cada 80 - perodo de sesiones. 81 82 83 PARA i en 1 .. UTL_HTTP.GET_HEADER_COUNT (resp) BUCLE UTL_HTTP.GET_HEADER (resp, i, nombre, valor); UTL_HTTP.END_RESPONSE (resp); 69 VUELTA;

84 DBMS_OUTPUT.PUT_LINE (nombre | | ':' | | valor); 85 END LOOP; 86 87 - Lee las lneas hasta que no quede ninguno y se produce una excepcin. 88 LAZO 89 UTL_HTTP.READ_LINE (resp, valor); 90 DBMS_OUTPUT.PUT_LINE (valor); 91 END LOOP; 92 EXCEPCIN 93 94 95 END; 96 / CUANDO ENTONCES UTL_HTTP.END_OF_BODY UTL_HTTP.END_RESPONSE (resp);

Procedimiento creado. SQL>

El siguiente bloque se muestran ejemplos de las llamadas al procedimiento en el Ejemplo 10-12 , pero las URLs para pginas son inexistentes. URLs sustitutos desde su propio servidor Web.
COMENZAR show_url ('http://www.oracle.com/no-such-page.html'); show_url ('http://www.oracle.com/protected-page.html'); show_url ('Http://www.oracle.com/protected-page.html', ' nombre de usuario ',' contrasea '); END; /

Vea tambin:

Base de datos Oracle PL / SQL paquetes y tipos de referencia para obtener informacin detallada sobre
el

Oracle Database paquetes PL / SQL y tipos de referencia para


obtener informacin detallada sobre UTL_URL . ESCAPEy UTL_URL .
Unescape

UTL_HTTPpaquete

Uso de tablas, mapas de imgenes, cookies, y variables CGI de PL / SQL


El uso de paquetes suministrados por Oracle, y la mod_plsql plug-in de Oracle HTTP Server (OHS), un subprograma PL / SQL puede dar formato a los resultados de una consulta en una tabla HTML, producir un mapa de imagen, establecer y obtener cookies HTTP, marque la valores de las variables CGI, y realizar otras operaciones tpicas Web. La documentacin para estos paquetes no es parte de la biblioteca de documentacin de la base de datos. La ubicacin de la documentacin depende de su servidor de aplicaciones. Para empezar a utilizar estos paquetes, mirar a sus nombres de subprogramas y los parmetros utilizando el SQL * Plus DESCRIBIRdeclaracin:
DESCRIBIR HTP; DESCRIBIR HTF; DESCRIBIR OWA_UTIL;

11 Desarrollo de pginas PL / SQL Server


En este captulo se explica cmo desarrollar PL / SQL Server Pages (PSP), que le permiten incluir contenido dinmico en pginas web. Temas:

Qu son las pginas PL / SQL Server y por qu usarlos? Requisitos previos para el desarrollo y PL / SQL Server Pages Implementacin Server Pages PL / SQL y el paquete HTP Pginas de PL / SQL Server y otras soluciones de scripting Desarrollo de pginas PL / SQL Server Cargando Pginas de PL / SQL Server en la base de datos Consulta de PL / Server Page cdigo fuente SQL Ejecucin Pginas PL / SQL Server a travs de URLs Ejemplos de pginas PL / SQL Server Depurar pginas PL / SQL Server Poner PL / SQL Server Pages en Produccin

Qu son las pginas PL / SQL Server y por qu usarlos?


PL / SQL Server Pages (PSP) son scripts de servidor que incluyen contenido dinmico, incluidos los resultados de las consultas SQL, dentro de pginas web.Puede crear las pginas web en una herramienta de autora HTML e insertar bloques de cdigo PL / SQL. Ejemplo 11-1 muestra una pgina de servidor de PL / SQL simple llamado sencilla . psp .

Ejemplo 11-1 simple.psp


: <% @ Page Language = "PL / SQL"%> : <% @ page contentType = "text / html"%> : <% @ PLSQL procedimiento = "show_employees"%> <% - Este ejemplo muestra el apellido y nombre de cada empleado en la tabla hr.employees. -%> ! <% emp_cursor cursor se last_name SELECT, first_name DE hr.employees ORDER BY apellidos; %> <html>

<head> <meta http-equiv="Content-Type" content="text/html"> < title> Lista de Empleados </ title> </ head> <body TEXT="#000000" bgcolor="#FFFFFF"> <h1> Lista de Empleados </ h1> <table width = "40%" border = "1 "> <tr> <th align="left"> Apellido </ th> <th align="left"> Nombre </ th> </ tr> <% PARA emp_record EN emp_cursor BUCLE%> <tr> < td> <% = emp_record.last_name%> </ td> <td> <% = emp_record.first_name%> </ td> </ tr> <% BUCLE END;%> </ table> </ body> </ html>

Puede compilar y cargar una pgina del servidor de PL / SQL en la base de datos con la loadpsp utilidad de lnea de comandos. El mandato siguiente cargasencilla . psp a la hora de esquema, la sustitucin de la show_employees procedimiento si ya existe:
loadpsp reemplazo fcil hr / contrasea simple.psp

Los usuarios pueden ejecutar el explorador show_employees procedimiento a travs de una URL. Una pgina HTML que muestra los nombres y apellidos de los empleados de la hora . empleados tabla se devuelve al navegador a travs de la pasarela de PL / SQL. Despliegue de contenido a travs de pginas PL / SQL Server tiene las siguientes ventajas:

Para los desarrolladores familiarizados con PL / SQL, las pginas del servidor son la manera ms fcil de crear pginas web profesionales que incluyen contenido generado por la base de datos. Usted puede desarrollar pginas web como lo hace normalmente y luego incrustar cdigo PL / SQL en el cdigo HTML. Pginas de PL / SQL Server pueden ser ms conveniente que usar los HTP y HTF paquetes de escribir la lnea de contenido HTML en lnea.

Dado que el procesamiento se realiza en el servidor de base de datos, el navegador del cliente recibe una pgina HTML normal sin etiquetas script especiales. Usted puede apoyar a todos los navegadores y los niveles del navegador igual. El trfico de red es eficiente ya que el uso de pginas PL / SQL Server reduce al mnimo el nmero de la base de datos de ida y viajes. Usted puede escribir contenido de forma rpida y seguir un proceso de desarrollo rpido e iterativo. Usted mantiene el control central del software, con slo un navegador web requerido en el sistema cliente.

Requisitos previos para el desarrollo y PL / SQL Server Pages Implementacin


Desarrollar e implementar PL / SQL Server Pages, debe cumplir con los siguientes requisitos previos:

Para escribir una pgina de servidor de PL / SQL que necesita acceso a un editor de texto o herramienta de autora HTML para escribir el guin. No se requiere ninguna otra herramienta de desarrollo. Para cargar una pgina del servidor de PL / SQL que necesita: o Una cuenta en la base de datos en el que se carga las pginas del servidor. o Los derechos de ejecucin a la loadpsp utilidad de lnea de comandos, que se encuentra en $ ORACLE_HOME / bin . Para desplegar las pginas del servidor debe utilizar mod_plsql. Como se explica en Uso de mod_plsql pasarela de corresponder las peticiones del cliente para una aplicacin Web PL / SQL , la pasarela hace uso de la Web Toolkit PL / SQL. Usando mod_plsql pasarela de corresponder las peticiones del cliente para una aplicacin Web PL / SQL

Vea tambin:

Server Pages PL / SQL y el paquete HTP


Puede permitir que los usuarios del navegador para ejecutar PL / SQL unidades a travs de HTTP de las siguientes maneras:

Al escribir un Pgina HTML con cdigo embebido PL / SQL y compilar como una pgina del servidor de PL / SQL. Es posible invocar subprogramas de la Web Toolkit PL / SQL, pero no para generar cada lnea de salida HTML.

Al escribir un subprograma almacenado completo que produce HTML invocando el HTP y OWA_ * paquetes en el Web Toolkit PL / SQL. Esta tcnica se describe en la salida Generacin de HTML con PL / SQL .

Por lo tanto, debe elegir qu tcnica utilizar al escribir su aplicacin web. Los factores clave para elegir entre estas tcnicas son:

Qu fuente es usted que usa como punto de salida? o Si usted tiene un gran cuerpo de HTML, y si desea incluir contenido dinmico o convertirla en la parte delantera de una aplicacin de base de datos, a continuacin, utilizar pginas PL / SQL Server. o Si usted tiene una gran cantidad de cdigo PL / SQL que produce una salida con formato, a continuacin, puede que le resulte ms conveniente para producir etiquetas HTML, cambiando sus estados de cuenta impresos para invocar la HTP paquete del kit de herramientas de Web PL / SQL. Cul es el entorno ms rpida y conveniente de autora para su grupo? o Si la mayora del trabajo se realiza utilizando herramientas de creacin HTML, entonces utilizar pginas PL / SQL Server. o Si utiliza las herramientas de autor que producen cdigo PL / SQL, entonces podra ser menos conveniente para utilizar pginas PL / SQL Server.

Pginas de PL / SQL Server y otras soluciones de scripting


Soluciones de scripting pueden ser del lado del cliente o del servidor. JavaScript es un lenguaje de script del lado del cliente ms popular. Pginas de PL / SQL Server son compatibles totalmente JavaScript. Debido a que cualquier tipo de etiquetas se puede pasar sin cambios en el navegador a travs de una pgina de servidor de PL / SQL, puede incluir JavaScript u otro cdigo de script del lado del cliente en una pgina del servidor de PL / SQL. Java Server Pages (JSP) y Active Server Pages (ASP) son dos de las soluciones ms populares de secuencias de comandos del lado del servidor. En comparacin con pginas PL / SQL Server:

Pginas de servidor Java son vagamente anlogo a PL / SQL Server Pages o pginas; servlets Java son anlogos a los paquetes PL / SQL. Pginas de PL / SQL Server utilizan la misma sintaxis de la etiqueta script como JSP para hacer ms fcil para cambiar de ida y vuelta. Pginas de PL / SQL Server utilizan una sintaxis similar a ASP, aunque no idntico. Por lo general, se debe traducir de VBScript o JScript para PL / SQL.Los mejores candidatos para la migracin son las pginas que utilizan

la interfaz (ADO) de objetos de datos activo para realizar operaciones de base de datos. Nota: No se pueden mezclar las pginas de servidor de PL / SQL con otras caractersticas de secuencias de comandos del lado del servidor, tales como inclusiones en el servidor. En muchos casos, usted puede obtener los mismos resultados mediante el uso de las correspondientes funciones Pginas PL / SQL Server.

Desarrollo de pginas PL / SQL Server


Desarrollar una pgina de servidor de PL / SQL, usted puede comenzar con una pgina web existente o con un subprograma almacenado existente. De cualquier manera, con algunas adiciones y cambios que usted puede crear pginas web dinmicas que llevan a cabo las operaciones de base de datos y mostrar los resultados. El archivo de una pgina del servidor de PL / SQL deben tener la extensin. psp . Puede contener cualquier contenido que usted elija, con el texto y las etiquetas intercaladas con las directivas de PL / SQL Server Pages, declaraciones y scriptlets. Una pgina de servidor puede adoptar las siguientes formas:

En el caso ms sencillo, se trata de un archivo HTML. Compilar como una pgina del servidor de PL / SQL produce un subprograma almacenado que genera exactamente el mismo archivo HTML. En el caso ms complejo, es un subprograma PL / SQL que genera todo el contenido de la pgina web, incluyendo las etiquetas de ttulo, el cuerpo y los encabezados. En el caso tpico, se trata de una mezcla de HTML (proporcionando las partes estticas de la pgina) y PL / SQL (que proporciona el contenido dinmico).

El orden y la colocacin de las pginas del servidor directivas y declaraciones PL / SQL generalmente no es significativa. Se vuelve significativa slo cuando se incluye otro archivo. Para facilitar el mantenimiento, se recomienda colocar las directivas y declaraciones juntos cerca del principio del archivo. Tabla 11-1 enumera losPL / SQL Server Pages o elementos y que dirige a la seccin que explica cmo usarlos. La seccin de Cotizacin y Escapar cadenas en una secuencia de comandos PSP describe cmo citar las cadenas que se utilizan en diversos elementos pginas PL / SQL Server.

Tabla 11-1 Elementos PSP

PSP Element
<% @ Page... %>

Nombre Directiva Pgina Directiva de parmetros

Especifica. . . Caractersticas de la pgina del servidor de PL / SQL. El nombre y, opcionalmente, el tipo y el valor predeterminado, para cada parmetro que espera el procedimiento almacenado PSP. El nombre del procedimiento almacenado producido por el archivo de PSP.

Seccin Especificacin Caractersticas bsicas Server Page La aceptacin de la entrada de usuario

<% @ Parmetro... %>

<% @ PLSQL... %>

Directiva Procedimiento

Nombrar el / procedimiento almacenado de SQL PL

<% @ Include

...%>

Incluya Directiva Declaracin Bloquear

El nombre de un archivo que se Incluido el contenido incluirn en un punto especfico de otros archivos en el archivo de PSP. La declaracin de un conjunto de variables PL / SQL que son visibles a lo largo de la pgina, no slo dentro de la prxima BEGIN / END bloque. Un conjunto de sentencias PL / SQL que se ejecutar cuando se ejecuta el procedimiento. Declaracin de variables globales en una secuencia de comandos de PSP Especificacin de Instrucciones ejecutables en una secuencia de comandos de PSP Sustituyendo los valores de expresin de una secuencia de comandos de PSP Incluidos los comentarios en un script de PSP

<%!

... %>

<%

... %>

Cdigo Bloquear

<% =

... %>

Expresin Bloquear

Una sola expresin de PL / SQL, como una cadena, expresin aritmtica, llamada a la funcin, o una combinacin de estos. Un comentario en un script de PSP.

<% -

... -%>

Comentario

Nota: Si ya est familiarizado con HTML dinmico, usted puede ir directamente a los ejemplos de pginas PL / SQL Server . Temas:

Especificacin Caractersticas bsicas Server Page La aceptacin de la entrada de usuario

Nombrar el / procedimiento almacenado de SQL PL Incluido el contenido de otros archivos Declaracin de variables globales en una secuencia de comandos de PSP Especificacin de Instrucciones ejecutables en una secuencia de comandos de PSP Sustituyendo los valores de expresin de una secuencia de comandos de PSP Citando y escapar de cadenas en una secuencia de comandos de PSP Incluidos los comentarios en un script de PSP

Especificacin Caractersticas bsicas Server Page


Utilice el <% @ page ... %> directiva para especificar las caractersticas de laPgina del servidor de PL / SQL como la siguiente:

Qu lenguaje de programacin que utiliza. Qu tipo de informacin (tipo MIME) que produce. Qu cdigo que correr para controlar todas las excepciones no capturadas. Esto podra ser un archivo HTML con un mensaje amistoso, renombrado a una. psp archivo. Debe especificar el mismo nombre de archivo en el loadpsp comando que compila el archivo principal de PSP. Debe especificar exactamente el mismo nombre tanto en el errorPage Directiva y en el loadpsp comando, incluyendo cualquier nombre de ruta relativa, como .. / include / .

El siguiente cdigo muestra la sintaxis de la pgina Directiva (los nombres de atributo contentType y ErrorPage distinguen entre maysculas y minsculas):
<% @ Page language = "PL / SQL ' contentType = ' content_type_string ' charset = ' codificacin ' errorPage '= archivo . psp ' %>

Temas:

Especificacin del idioma de Scripting Devolucin de datos al navegador del cliente Gestin de errores de secuencias de comandos

Especificacin del idioma de Scripting

Para identificar un archivo como una pgina de servidor de PL / SQL, incluya la siguiente directiva en algn lugar en el archivo:
<% @ Page language = "PL / SQL"%>

Esta directiva es por compatibilidad con otros entornos de scripts. Ejemplo 111 muestra un ejemplo de pgina de servidor de PL / SQL simple que incluye la directiva idioma. Devolucin de datos al navegador del cliente Opciones:

Volviendo HTML Volviendo XML, texto, y otros tipos de documentos Pginas que regresan con diferentes juegos de caracteres

Volviendo HTML

Las piezas de PL / SQL de una pgina del servidor de PL / SQL estn marcadas por delimitadores especiales. El resto del contenido se pasa tal y como es, incluyendo espacios en blanco-en el navegador. Para mostrar texto o HTML etiquetas, escribir como usted escribira una pgina web tpica. No es necesario invocar a cualquiera de las funciones de salida. Como ejemplo, la pgina del servidor en Ejemplo 111 devuelve la pgina HTML se muestra en Ejemplo 11-2 , excepto que incluye las filas de la tabla de los empleados consultados.

Ejemplo 11-2 Ejemplo de la Vuelta de pgina HTML


<html> <head> <meta http-equiv="Content-Type" content="text/html"> <title> Lista de Empleados </ title> </ head> <TEXTO body = "# 000000" BGCOLOR = " # FFFFFF "> <h1> Lista de empleados </ h1> <table width="40%" border="1"> <tr> <th align="left"> Apellido </ th> < align = " left "> Nombre </ th> </ tr> <- conjunto de resultados de consulta de hr.employees insertados aqu ->

</ table> </ body> </ html>

A veces es posible que desee mostrar una lnea de salida o de otra, o cambiar el valor de un atributo, basndose en una condicin. Puede incluir estructuras de control y sustitucin de variables dentro de los delimitadores de PSP, como se muestra en el siguiente fragmento de cdigo de Ejemplo 11-1 :
<% PARA emp_record EN emp_cursor BUCLE%> <tr> <td> <% = emp_record.last_name%> </ td> <td> <% = emp_record.first_name%> </ td> </ tr> <% END LOOP ;%>

Volviendo XML, texto, y otros tipos de documentos

Por defecto, el / gateway PL SQL transmite archivos como documentos HTML de forma que el navegador interpreta las etiquetas HTML. Si desea que el navegador de interpretar el documento como XML, texto plano (sin formato), o algn otro tipo de documento, a continuacin, incluir la siguiente directiva:
<% @ Page contentType = " tipoMIME "%>

El nombre del atributo contentType distingue entre maysculas y minsculas. Introduzca el texto / html , text / xml , text / plain , image / jpeg , o algn otro tipo MIME que el navegador u otro programa cliente reconoce. Los usuarios podran tener que configurar sus navegadores para reconocer algunos tipos MIME. A continuacin se muestra un ejemplo de una directiva para una hoja de clculo de Excel:
<% @ Page contentType = "application / vnd.ms-excel"%>

Normalmente, una pgina del servidor de PL / SQL est diseado para ser visualizado en un navegador web. Tambin se puede recuperar e interpretado por un programa que puede hacer peticiones HTTP, como aa Java o un cliente Perl.
Pginas que regresan con diferentes juegos de caracteres

Por defecto, el / gateway PL SQL transmite archivos con el conjunto de caracteres definido por el Gateway PL / SQL. Para convertir los datos a un conjunto de caracteres diferente para la pantalla del navegador, incluir la siguiente directiva:

<% @ Page charset = "codificacin"%>

Especifique reconoce.

Shift_JIS

Big5

UTF-8

, u otra codificacin que el programa cliente

Tambin debe configurar el ajuste del juego de caracteres en el descriptor de acceso de base de datos (DAD) de la pasarela de PL / SQL. Los usuarios podran tener que seleccionar la misma codificacin en sus navegadores para ver los datos que se muestran correctamente. Por ejemplo, una base de datos en Japn podra tener un conjunto de caracteres de base de datos que utiliza la EUC de codificacin, pero los navegadores web estn configurados para mostrar Shift_JIS codificacin. Gestin de errores de secuencias de comandos Al escribir PL / SQL Server Pages, puede obtener los siguientes tipos de errores:

Errores de sintaxis HTML El navegador se encarga de estos errores. El para ellos.


loadpsp

utilidad no comprueba

Errores de sintaxis PL / SQL El loadpsp utilidad se detiene y muestra el nmero de lnea, nmero de la columna, y un breve mensaje. Debe corregir el error antes de continuar. Cualquier versin anterior del subprograma almacenado se puede borrar cuando se intenta sustituirla por una secuencia de comandos que contiene un error de sintaxis. Es posible que desee utilizar una base de datos para la creacin de prototipos y la depuracin y, a continuacin, cargar el subprograma almacenado final hacia otra base de datos para la produccin. Puede cambiar las bases de datos utilizando una opcin de lnea de comando sin modificar el cdigo fuente.

Errores de tiempo de ejecucin Para controlar los errores de base de datos que se producen cuando se ejecuta el script, se puede incluir el cdigo de control de excepciones PL / SQL dentro de un archivo PSP y tener cualquier excepcin no controlada que aparezca una pgina especial de PL / SQL servidor. Utilice la errorPageatributo (el nombre distingue entre maysculas y minsculas) de la <% @ page ... %> directiva para especificar el nombre de la pgina.

La pgina de excepciones no controladas es una pgina de servidor de PL / SQL con la extensin. psp . El subprograma de error no recibe ningn parmetro, por lo que para determinar la causa del error, puede invocar los SQLCODE y SQLERRM funciones. Tambin puede mostrar una pgina HTML estndar sin ningn tipo de script cuando se produce un error, pero usted todava tiene que darle la extensin. psp y cargarlo en la base de datos como un subprograma almacenado. La siguiente lnea especifica se encuentran errores:
los errores

psp

como pgina de correr cuando

<% @ Page language = "PL / SQL" contentType = "text / html" errorPage = "errors.psp" %>

La aceptacin de la entrada de usuario


Para configurar el traspaso de parmetros para una pgina de servidor de PL / SQL, incluya una directiva con la siguiente sintaxis:
<% @ PLSQL parmetro = " parameter_name "[type =" PL / SQL_type "] [default =" valor "]%>

El valor predeterminado PL / SQL_type es VARCHAR2 . La siguiente directiva especifica que el parmetro p_employee_id es del tipo NMERO :
<% @ PLSQL parmetro = tipo "p_employee_id" = "NUMBER"%>

Al especificar un valor predeterminado para un parmetro hace que el parmetro opcional. El valor predeterminado es sustituido directamente en una declaracin PL / SQL, por lo que cualquier cadena debe ir entre comillas simples, y se puede utilizar valores especiales como NULL . La siguiente directiva especifica que el parmetro p_last_name tiene el valor predeterminado NULL :
<% @ PLSQL parmetro = "p_last_name" default = "NULL"%>

La entrada del usuario viene codificado en la URL que recupera la pgina HTML. Puede generar la URL de la codificacin dura en un enlace HTML, o invocando su pgina como la accin de un formulario HTML. Su pgina recibe la entrada como parmetros a un subprograma almacenado PL / SQL. Ejemplo 11-3 es como Ejemplo 11-1 , excepto que utiliza un parmetro, p_employee_id . Si el / gateway PL SQL est configurado para que pueda ejecutar procedimientos invocando http :/ / www . anfitrin . com / pls / proc_name , donde proc_name es el nombre de un

procedimiento, entonces usted puede pasar a 200 para el parmetro p_employee_id de la siguiente manera:
http://www.example.com/pls/show_employees?p_employee_id=200

Ejemplo 11-3 simplewithuserinput.psp


<% @ Page language = "PL / SQL"%> <% @ page contentType = "text / html"%> <% @ PLSQL parmetro = "p_employee_id" default = tipo "null" = "NUMBER"%> <% @ PLSQL procedimiento = "show_employees"%> <% - Este ejemplo muestra el apellido y el nombre de cada empleado en la tabla hr.employees. -%> ! <% emp_cursor cursor se last_name SELECT, first_name DE hr.employees DONDE employee_id = p_employee_id ORDER BY apellidos; %> <html> <head> <meta http-equiv = contenido "Content-Type" = "text / html "> <title> Lista de Empleados </ title> </ head> <body TEXT="#000000" bgcolor="#FFFFFF"> <h1> Lista de Empleados </ h1> <table width = "40%" border = "1"> <tr> <th align="left"> Apellido </ th> <th align="left"> Nombre </ th> </ tr> <% PARA emp_record EN emp_cursor BUCLE%> <tr> <td> <% = emp_record.last_name%> </ td> <td> <% = emp_record.first_name%> </ td> </ tr> <% END LOOP;%> </ table> </ body> </ html>

Nombrar el / procedimiento almacenado de SQL PL

Cada pgina del servidor de PL / SQL de primer nivel corresponde a un procedimiento almacenado en el servidor. Cuando se carga la pgina con loadpsp , la utilidad crea un procedimiento almacenado PL / SQL. Si la pgina del servidor es el nombre . psp , el nombre del procedimiento por defecto es el nombre .Por ejemplo, si es la pgina de servidor hello_world . psp , a continuacin, el nombre del procedimiento predeterminado es hello_world . Para especificar un nombre de procedimiento, utilice la siguiente directiva, donde procname es el nombre para el procedimiento:
<% @ PLSQL procedimiento = " procname "%>

En Ejemplo 11-1 , la siguiente directiva le da al procedimiento almacenado los nombres de show_employees :


<% @ PLSQL procedimiento = "show_employees"%>

Es el nombre del procedimiento, no el nombre del script de PSP, que incluya en la URL.

Incluido el contenido de otros archivos


Usted puede establecer un mecanismo de incluir a tirar en el contenido de otros archivos, por lo general contiene o bien el contenido HTML esttico o ms cdigo de secuencias de comandos PL / SQL. Inserte la siguiente directiva en el punto donde el contenido de otro archivo debe aparecer, en sustitucin denombre de archivo con el nombre del archivo que debe incluirse:
<% @ Include file = " nombre del archivo "%>

El fichero incluido debe tener una extensin distinta. psp . Debe especificar exactamente el mismo nombre tanto en el incluyen Directiva y en el loadpspcomando, incluyendo cualquier nombre de ruta relativa, como .. / include / . Debido a que los archivos se procesan cuando se carga el procedimiento almacenado en la base de datos, la sustitucin se realiza slo una vez, no cada vez que se sirve la pgina. Por lo tanto, no se muestran los cambios en los archivos incluidos que se producen despus de que la pgina se carga en la base de datos cuando se ejecuta el procedimiento. Usted puede utilizar la funcin de incluir a tirar en las bibliotecas de cdigo, tales como banderas de navegacin, pies de pgina, tablas de contenido, y as sucesivamente en varios archivos. Alternativamente, puede utilizar esta funcin

como una capacidad macro para incluir la misma seccin de cdigo de script en ms de un lugar en una pgina. El siguiente ejemplo se incluye un pie de pgina HTML:
<% @ Include file = "footer.htm"%>

Cuando utilice archivos incluidos:


Puede utilizar cualquier nombre y extensiones para los archivos incluidos. Por ejemplo, puede incluir un archivo llamado productos . txt . Si los archivos incluidos contienen cdigo de secuencias de comandos PL / SQL, entonces no necesitan su propio conjunto de directivas para identificar el nombre del procedimiento, juego de caracteres, y as sucesivamente. Al especificar los nombres de los archivos en el loadpsp utilidad, debe incluir los nombres de todos los ficheros incluidos tambin. Especifique los nombres de los archivos incluidos antes de que los nombres de ninguno. psp archivos.

Declaracin de variables globales en una secuencia de comandos de PSP


Usted puede utilizar el <%! ... %> directiva para definir un conjunto de variables PL / SQL que son visibles a lo largo de la pgina, no slo dentro de la prximaBEGIN / END bloque. Este elemento normalmente abarca varias lneas, con declaraciones de variables PL / SQL individuales que terminaron por punto y coma. La sintaxis de esta directiva es la siguiente:
<!% PL declaracin / SQL; [ PL declaracin / SQL; ] ...%>

Se permite que la sintaxis habitual PL / SQL dentro del bloque. El servidor delimitadores como forma abreviada, lo que le permite omitir el DECLARE palabra clave. Todas las declaraciones estn disponibles para el cdigo en el archivo posteriormente. Ejemplo 11-1 incluye la siguiente declaracin del cursor:
<!% emp_cursor cursor se last_name SELECT, first_name DE hr.employees ORDER BY apellidos; %>

Puede especificar varios bloques de declaracin; internamente, todos estn fusionados en un solo bloque cuando se crea el archivo de PSP como un procedimiento almacenado. Tambin puede utilizar explcitas DECLARE bloques dentro de los <% ... %> delimitadores que se explican en Especificar Instrucciones ejecutables en un script de PSP . Estas declaraciones son accesibles solamente a los siguientes BEGIN / END bloque. Nota: Para hacer las cosas ms fciles de mantener, mantener todas sus directivas y declaraciones en conjunto cerca del comienzo de una pgina de servidor de PL / SQL.

Especificacin de Instrucciones ejecutables en una secuencia de comandos de PSP


Usted puede utilizar el <% ... %> directiva bloque de cdigo para ejecutar un conjunto de instrucciones PL / SQL cuando se ejecuta el procedimiento almacenado. El siguiente cdigo muestra la sintaxis de las sentencias ejecutables:
<% sentencia PL / SQL; [ sentencia PL / SQL; ] ...%>

Este elemento normalmente abarca varias lneas, con las declaraciones individuales de PL / SQL que terminaron por punto y coma. Las declaraciones pueden incluir bloques completos, como en el siguiente ejemplo, que invoca el OWA_UTIL . TABLEPRINT procedimiento:
<% OWA_UTIL.TABLEPRINT (CTable => 'hr.employees', CATTRIBUTES => 'border = de 2', CColumns => 'apellido, nombre', CCLAUSES => 'DONDE employee_id> 100');%>

Los estados tambin pueden ser las partes de horquillado de IF / THEN / ELSE o BEGIN / END bloques. Cuando un bloque de cdigo se divide en varias directivas, puede poner HTML o de otras Directivas, en el medio, y las piezas intermedias se ejecutan condicionalmente cuando se ejecuta el procedimiento almacenado. El siguiente cdigo de ejemplo 11-11 proporciona una ilustracin de esta tcnica:
<% DE PUNTO IN (SELECT product_name, list_price, catalog_url DE product_information DONDE list_price IS NOT NULL ORDER BY DESC list_price) LAZO SI item.list_price> p_minprice ENTONCES

v_color: = '# CCCCFF'; ELSE v_color: = '# CCCCCC'; END SI; %> <TR BGCOLOR = "<% = v_color%>"> <TD> <A HREF = "<% = item.catalog_url%>"> <% = item.product_name%> </ A> </ TD > <TD> <BIG> <% = item.list_price%> </ BIG> </ TD> </ TR> BUCLE <% END;%>

Se permite todo la sintaxis habitual PL / SQL dentro del bloque. El servidor delimitadores como forma abreviada, lo que le permite omitir el DECLARE palabra clave. Todas las declaraciones estn disponibles para el cdigo ms adelante en el archivo. Nota: Para compartir los procedimientos, constantes y tipos a travs de diferentes pginas de servidor de PL / SQL, compilarlos en un paquete en la base de datos mediante el uso de un archivo de origen PL / SQL sin formato. Aunque se puede hacer referencia a los procedimientos de envasados, constantes y tipos de secuencias de comandos de PSP, los scripts de PSP slo puede producir procedimientos independientes, no los paquetes.

Sustituyendo los valores de expresin de una secuencia de comandos de PSP


Una directiva expresin da salida a una sola expresin de PL / SQL, como una cadena, expresin aritmtica, llamada a la funcin, o una combinacin de estas cosas. El resultado es sustituido como una cadena en ese punto de la pgina HTML que se produce por el procedimiento almacenado. El resultado de la expresin debe ser un valor de cadena o ser capaz de ser echado en una cadena. Para cualquier tipo que no pueden ser emitidos de forma implcita, como laFECHA , pase el valor al PL / SQL TO_CHAR funcin. La sintaxis de una directiva de la expresin es el siguiente, en el que la expresin del marcador de posicin se sustituye por la expresin deseada:
<% = expresin %>

Usted no tiene que poner fin a la expresin / PL SQL con un punto y coma.

Ejemplo 11-1 incluye una directiva para imprimir el valor de una variable en una fila de un cursor:
<% = Emp_record.last_name%>

Compare el ejemplo anterior para el equivalente htp . impresin llamada en el ejemplo siguiente (tenga en cuenta sobre todo el punto y coma que termina la declaracin):
<% HTP.PRN (emp_record.last_name);%>

El contenido dentro de los <% = ... %> delimitadores es procesada por el HTP . PRN funcin, que las MIC iniciales o finales espacios en blanco y requiere que usted cita cadenas literales. Puede utilizar la concatenacin usando el smbolo de canalizacin doble ( | | ) como en PL / SQL. La directiva siguiente muestra un ejemplo de concatenacin:
<% = 'El empleado apellido es' | | emp_record.last_name%>

Citando y escapar de cadenas en una secuencia de comandos de PSP


Atributos de PSP utilizan comillas dobles para delimitar datos. Cuando se utilizan los valores especificados en los atributos de PSP para las operaciones de PL / SQL, se pasan exactamente como los especifica en el archivo de PSP. Por lo tanto, si PL / SQL requiere una cadena entre comillas simples, entonces usted debe especificar la cadena con las comillas simples alrededor de l-y rodear todo el asunto con comillas dobles. Por ejemplo, el procedimiento PL / SQL puede utilizar la cadena de Babe Ruth como el valor por defecto para una variable. Para la cadena a ser usada en PL / SQL, debe encerrar entre comillas simples como 'Babe Ruth' . Si especifica esta cadena entre comillas simples en el defecto de atributos de una directiva PSP, debe encerrar entre comillas dobles, como en el siguiente ejemplo:
<% @ PLSQL parmetro = "in_players" default = "" Babe Ruth ""%>

Tambin puede anidar cadenas con comillas simples dentro de comillas simples. En este caso, debe escapar de las comillas simples anidados especificando la secuencia \ ' . Por ejemplo:
<% @ PLSQL parmetro = "in_players" default = "'Walter \' Big Train \ 'Johnson'"%>

Puede incluir la mayora de los caracteres y secuencias de caracteres en un archivo de PSP sin tener que cambiar el cargador de PSP. Para incluir la secuencia%> , especifique la secuencia de escape % \> . Para incluir la secuencia <% , especifique la secuencia de escape <\% . Por ejemplo:
<% = "El% \> secuencia se utiliza en el lenguaje de secuencias de comandos: '| | lang_name%> <% = 'El <\ secuencia% se utiliza en el lenguaje de secuencias de comandos:' | | lang_name%>

Incluidos los comentarios en un script de PSP


Para poner un comentario en la parte HTML de una pgina del servidor de PL / SQL para el beneficio de aquellos que lean el cdigo fuente PSP, utilice la siguiente sintaxis:
<% - comentario escrito PSP -%>

Los comentarios en el formulario anterior, no aparecen en la salida HTML de la PSP y no aparecen cuando se consulta el cdigo fuente de PL / SQL enUSER_OBJECTS . Para crear un comentario que es visible en la salida HTML y en el USER_OBJECTS fuente, colocar el comentario en el cdigo HTML y el uso de la sintaxis normal de comentario HTML:
<- HTML texto de comentario ->

Para incluir un comentario dentro de un / bloque PL SQL dentro de una PSP, y para hacer el comentario invisible en la salida HTML, pero visible enUSER_OBJECTS , utilice el comentario sintaxis normal de PL / SQL, como en el siguiente ejemplo:
- Comentario en PL / SQL de cdigo

Ejemplo 11-4 muestra un fragmento de un archivo de PSP con los tres tipos de comentarios.

Ejemplo 11-4 Comentarios de ejemplo en un archivo de PSP


<p> Hoy presentamos nuestro nuevo modelo XP-10. <% . Este es el proyecto con el nombre cdigo "Proyecto Secreto" Los usuarios que visualizan la pgina HTML no vern este comentario de script PSP. El comentario no es visible en las USER_OBJECTS cdigo fuente. -%> <-

. Algunas imgenes de los XP-10 Los usuarios que ven la fuente de la pgina HTML vern este comentario. El comentario tambin es visible en el cdigo fuente USER_OBJECTS. -> <% PARA image_file IN ( pathname SELECT, anchura, altura, descripcin DESDE DONDE image_library model_num = 'XP-10') - Comentarios intercalados con declaraciones de PL / SQL. - Los usuarios que ven la fuente de la pgina HTML no ver estos comentarios PL / SQL. - Estos comentarios son visibles en el cdigo fuente USER_OBJECTS. BUCLE %> <img src = "<% = image_file.pathname%>" width = <% image_file.width%> height = <% image_file.height%> alt = "<% image_file. Descripcin%> "> <br> <% END LOOP;%>

Cargando Pginas de PL / SQL Server en la base de datos


Utilice el loadpsp utilidad, que se encuentra en $ ORACLE_HOME / bin , para cargar uno o ms archivos de PSP en la base de datos como procedimientos almacenados. Cada. psp archivo corresponde a un procedimiento almacenado. Las pginas se compilan y se cargan en un solo paso, para acelerar el ciclo de desarrollo. La sintaxis de la loadpsp utilidad como sigue:
loadpsp [-replace]-user usuario / contrasea [@ connect_string ] [ includefile ...] [ ErrorFile ] pspfile ...

Para crear procedimientos con replace bandera.

CREATE OR REPLACE

sintaxis, utilice el

Cuando se carga un archivo de PSP, el cargador realiza las siguientes acciones: 1. Sesin en la base de datos con el nombre especificado por el usuario, la contrasea y el nombre de servicio de red 2. Crea los procedimientos almacenados en el esquema de usuario Incluya los nombres de todos los archivos de inclusin antes de que los nombres de las pginas de servidor de PL / SQL. Tambin incluya el nombre del archivo especificado en el errorPage atributo de la pgina Directiva. Estos nombres de

archivo en la loadpsp lnea de comandos deben coincidir exactamente con los nombres especificados en el PSP incluyen y pginas directivas, incluyendo cualquier nombre de ruta relativa, como .. / incluir /.Ejemplo 11-5 muestra un comando de carga de muestra de PSP.

Ejemplo 11-5 La carga de pginas PL / SQL Server


loadpsp reemplazo fcil joe/abc123 @ / db3 banner.inc error.psp display_order.psp

En Ejemplo 11-5 :

El procedimiento almacenado se crea en la base de datos DB3 . Se accede a la base de datos como usuario joe con contrasea abc123 , tanto para crear el procedimiento almacenado y cuando se ejecute el procedimiento almacenado. bandera . inc es un archivo que contenga texto repetitivo y el cdigo de secuencia de comandos que se incluye en el archivo. psp archivo. La inclusin se produce cuando el PSP se carga en la base de datos, no cuando se ejecuta el procedimiento almacenado. error . psp es un archivo que contiene cdigo, texto, o ambos que se procesa cuando se produce una excepcin no controlada, para presentar una pgina amigable en lugar de un mensaje de error interno. Display_Order . psp contiene el cdigo principal y el texto de la pgina web. Por defecto, el correspondiente procedimiento almacenado se llamaDisplay_Order .

Consulta de PL / Server Page cdigo fuente SQL


El cdigo que loadpsp genera es diferente del cdigo en el archivo de origen. Tiene llamadas a la HTP paquete, lo que genera las etiquetas HTML de la pgina web. Despus de cargar un archivo de PSP, se puede ver el cdigo fuente generado mediante la consulta de las vistas del diccionario de datos estticos * _source. Por ejemplo, suponga que se carga el script en Ejemplo 11-1 con el siguiente comando:
loadpsp reemplazo fcil hr / contrasea simple.psp

Si inicia una sesin en la base de datos como usuario hr , se puede ejecutar la consulta en SQL * Plus para ver el cdigo fuente de la PSP, como en Ejemplo 116.

Ejemplo 11-6 Consultar PL / SQL Server Page Cdigo Fuente

SQL> SELECT TEXT 2 3 4 DE USER_SOURCE donde nombre = 'SHOW_EMPLOYEES' ORDER BY LINEA;

show_employees procedimiento que emp_cursor cursor se last_name SELECT, first_name DE hr.employees ORDER BY apellidos; EMPEZAR NULL; owa_util.mime_header ('text / html') ; htp.prn (' '); htp.prn (' '); htp.prn (' '); htp.prn (' '); htp.prn (' '); htp.prn (' <html> < head> <meta http-equiv="Content-Type" content="text/html"> <title> Lista de Empleados </ title> </ head> <body TEXT="#000000" bgcolor="#FFFFFF"> <h1> Lista de Empleados </ h1> <table width="40%" border="1"> <tr> <th align="left"> Apellido </ th> <th align="left"> Primera Nombre </ th> </ tr> '); PARA emp_record EN BUCLE emp_cursor htp.prn (' <tr> <td> '); htp.prn (emp_record.last_name); htp.prn ('</ td> < td> ');

htp.prn (emp_record.first_name); htp.prn ('</ td> </ tr> '); END LOOP; htp.prn (' </ table> </ body> </ html> '); END; . 50 filas seleccionadas SQL>

Ejecucin Pginas PL / SQL Server a travs de URLs


Despus de la pgina del servidor de PL / SQL se convierte en un procedimiento almacenado, puede ejecutar el procedimiento mediante la recuperacin de un URL HTTP a travs de un navegador web u otro programa cliente en Internet conscientes. La ruta de acceso virtual de la direccin URL depende de la forma en que el / gateway PL SQL est configurado. Los parmetros para el procedimiento almacenado se pasan a travs de ya sea el POSTE mtodo o el GET mtodo del protocolo HTTP. Con el POSTE mtodo, los parmetros se pasan directamente desde un formulario HTML y no son visibles en la URL. Con el GET mtodo, los parmetros se pasan como pares nombre-valor en la cadena de consulta de la URL, separados por y personajes, con la mayora de los caracteres no alfanumricos en formato codificado (como % 20 por un espacio). Usted puede utilizar el GET mtodo para invocar una pgina de PSP de un formulario HTML, o puede utilizar un enlace HTML no modificable para invocar al procedimiento almacenado con un determinado conjunto de parmetros. Usando
METHOD = GET

, la sintaxis de la URL se ve algo como lo siguiente:

http:// sitename / SchemaName / procname ? parmname1 = valor1 y parmname2 = valor2

Por ejemplo, el siguiente URL incluye un

p_lname

p_fname

parmetro:

http://www.example.com/pls/show_employees?p_lname=Ashdown&p_fname=Lance

Usando

method = post

, la sintaxis de la URL no muestra los parmetros:

http:// sitename / SchemaName / procname

Por ejemplo, el siguiente URL especifica un nombre de procedimiento, pero no pasa parmetros:
http://www.example.com/pls/show_employees

El METHOD = GET formato es ms conveniente para la depuracin y permite que los visitantes pasan exactamente los mismos parmetros cuando regresen a la pgina a travs de un marcador. El method = post formato permite un mayor volumen de datos de los parmetros, y es adecuado para la transmisin de informacin sensible que no debe ser representada en la URL. (URLs perduran en el historial del navegador y en los encabezados HTTP que se pasan a la pgina siguiente-visitado.) No es prctico para marcar las pginas que se invocan de esta manera.

Ejemplos de pginas PL / SQL Server


En esta seccin se muestra cmo se puede empezar con una simple pgina de servidor de PL / SQL, y producir versiones cada vez ms complicadas a medida que adquiera ms confianza. A medida que avanza a travs de cada paso, puede seguir las instrucciones de carga de pginas PL / SQL Server en la base de datos y la Ejecucin de pginas PL / SQL Server a travs de URLs para probar los ejemplos. Temas:

Configuracin para las pginas PL / SQL Server Ejemplos Impresin de la tabla de la muestra con un Loop Permitir seleccin de un usuario El uso de un formulario HTML para invocar un servidor de la pgina PL / SQL Incluyendo JavaScript en un archivo PSP

Configuracin para las pginas PL / SQL Server Ejemplos


Estos ejemplos utilizan la PRODUCT_INFORMATION mesa en el describe de la siguiente manera:
SQL> DESCRIBIR PRODUCT_INFORMATION; Name Null? Tipo ------------------------------------------------- ---------------------------OE

esquema, que se

PRODUCT_ID NO NMERO NULL (6) PRODUCT_NAME VARCHAR2 (50) PRODUCT_DESCRIPTION VARCHAR2 (2000) NMERO CATEGORY_ID (2) WEIGHT_CLASS NMERO (1) WARRANTY_PERIOD INTERVAL YEAR (2) A MES supplier_id NMERO (6) PRODUCT_STATUS VARCHAR2 (20) NMERO LIST_PRICE (8,2) NMERO MIN_PRICE (8,2) CATALOG_URL VARCHAR2 (50) SQL>

Los ejemplos se supone lo siguiente:


Ha configurado mod_plsql como se describe en Usando mod_plsql pasarela de corresponder las peticiones del cliente para una aplicacin Web PL / SQL. Se ha creado un DAD para la autenticacin esttica de la OE usuario. Se puede acceder a los procedimientos almacenados PL / SQL creados en el OE esquema a travs de la siguiente URL, donde proc_name es el nombre de un procedimiento almacenado: http://www.example.com/pls/proc_name

Para propsitos de depuracin, puede mostrar el contenido completo de una tabla de SQL con una llamada a OWA_UTIL . TABLEPRINT , como en Ejemplo 11-7. Ejemplos posteriores muestran otras tcnicas que dan un mayor control sobre la presentacin.

Ejemplo 11-7 show_prod_simple.psp


<% @ PLSQL procedimiento = "show_prod_simple"%> <HTML> <HEAD> <TITLE> Mostrar contenidos de product_information (Complete Dump) </ TITLE> </ HEAD> <BODY> <% DECLARAN BOOLEAN maniqu; EMPEZAR dummy: = OWA_UTIL . TABLEPRINT ('oe.product_information', 'frontera'); END; %> </ BODY> </ HTML>

Cargue el PSP en Ejemplo 11-7 en la lnea de comandos de la siguiente manera:


loadpsp reemplazo usuario oe / contrasea show_prod_simple.psp

Acceda a la PSP a travs de la siguiente URL:


http://www.example.com/pls/show_prod_simple

Impresin de la tabla de la muestra con un Loop


Ejemplo 11-7 recorre los elementos de la product_information mesa y ajusta el SELECT de declaracin para obtener slo un subconjunto de las filas o columnas. En este ejemplo se utiliza una presentacin muy simple, un conjunto de elementos de la lista, para evitar cualquier problema de etiquetas de tabla no coinciden o no cerradas.

Ejemplo 11-8 show_catalog_raw.psp


<% @ PLSQL procedimiento = "show_prod_raw"%> <HTML> <HEAD> <TITLE> Mostrar productos (forma cruda) </ TITLE> </ HEAD> <BODY> <UL> <% PARA punto IN (SELECT product_name, list_price , catalog_url DE product_information DONDE list_price IS NOT NULL ORDER BY DESC list_price) BUCLE%> <LI> artculo = <% = item.product_name%> <BR> Precio = <% = item.list_price%> <BR> URL = <% = item.catalog_url%> <BR> <% END LOOP;%> </ UL> </ BODY> </ HTML>

Ejemplo 11-9 muestra una variacin ms sofisticada del Ejemplo 11-8 en el que se aade al formato HTML para mejorar la presentacin.

Ejemplo 11-9 show_catalog_pretty.psp


<% @ PLSQL procedimiento = "show_prod_pretty"%> <HTML> <HEAD> <TITLE> Mostrar productos (mejor forma) </ TITLE> </ HEAD>

<BODY> <UL> <% PARA punto IN (SELECT product_name, list_price , catalog_url DE product_information DONDE list_price IS NOT NULL ORDER BY DESC list_price) BUCLE%> <LI> artculo = <A HREF = <% = item.catalog_url% >> <% = item.product_name%> </ A> Precio = <BIG> <% = item.list_price%> </ BIG> <BR> <% END LOOP;%> </ UL> </ BODY> </ HTML>

Permitir seleccin de un usuario


En el Ejemplo 11-7 , Ejemplo 11-8 , y 11-9 Ejemplo , la pgina HTML sigue siendo la misma a menos que el PRODUCT_INFORMATION se actualiza la tabla.Ejemplo 1110 hace lo siguiente:

Hace que la pgina HTML aceptar un precio mnimo, y presenta slo los elementos que son ms caros. (Criterios de compra de sus clientes pueden variar.) Establece el precio mnimo por defecto a 100 unidades de la moneda correspondiente.

Ejemplo 11-10 show_product_partial.psp


<% @ PLSQL procedimiento = "show_product_partial"%> <% @ PLSQL parmetro por defecto = "p_minprice" = "100"%> <HTML> <HEAD> <TITLE> Mostrar elementos mayor que la especificada Precio </ TITLE> </ HEAD> <BODY> <P> Este informe muestra los artculos cuyo precio es mayor que <% = p_minprice%>. <UL> <% DE PUNTO IN (SELECT product_name, list_price, catalog_url DE product_information DONDE list_price> p_minprice ORDER BY DESC list_price) BUCLE %> <LI> artculo = <A HREF = "<% = item.catalog_url%>"> <% = item.product_name%> </ A>

= Precio <BIG> <% = item.list_price%> </ BIG> <BR> <% END LOOP;%> </ UL> </ BODY> </ HTML>

Despus de cargar el Ejemplo 11-10 en la base de datos, se puede pasar un parmetro al show_product_partial procedimiento a travs de una URL. El ejemplo siguiente especifica un precio mnimo de 250:
http://www.example.com/pls/show_product_partial?p_minprice=250

Resultados de filtrado es adecuada para aplicaciones tales como los resultados de bsqueda, en los que los usuarios pueden estar abrumados por las opciones. Pero en una situacin de venta al pblico, es posible que desee utilizar la tcnica alternativa se ilustra en el ejemplo 11-11 , de manera que los clientes pueden optar por comprar otros artculos:

En lugar de filtrar los resultados a travs de una DONDE clusula, recuperar el conjunto de resultados y luego tomar acciones diferentes para diferentes filas devueltas. Cambie el cdigo HTML para destacar la salida que se ajuste a sus criterios. Ejemplo 11-11 utiliza el color de fondo de una fila de tabla HTML. Tambin puede insertar un icono especial, aumentar el tamao de fuente, o usar otra tcnica para llamar la atencin a las filas ms importantes. Presentar los resultados en una tabla HTML.

Ejemplo 11-11 show_product_highlighed.psp


<% @ PLSQL procedimiento = "show_product_highlighted"%> <% @ PLSQL parmetro por defecto = "p_minprice" = "100"%> <%! v_color VARCHAR2 (7);%> <HTML> <HEAD> <TITLE> Mostrar elementos mayor que la especificada Precio </ TITLE> </ HEAD> <BODY> <P> Este informe muestra todos los elementos, destacando aquellos cuyo precio es superior a <% = p_minprice%>. <P> <TABLE BORDER> <TR> <TH> Producto </ TH>

<TH> Precio </ TH> </ TR> <% DE PUNTO IN (SELECT product_name, list_price, catalog_url DE product_information DONDE list_price IS NOT NULL ORDER BY DESC list_price) LAZO SI item.list_price> p_minprice ENTONCES v_color: = '# CCCCFF'; ELSE v_color: = '# CCCCCC'; END IF; %> <TR BGCOLOR = "<% = v_color %> "> <TD> <A HREF = "<% = item.catalog_url%>"> <% = item.product_name%> </ A> </ TD> <TD> <BIG> <% = item.list_price %> </ big> </ TD> </ TR> <% END BUCLE;%> </ CUADRO> </ BODY> </ HTML>

El uso de un formulario HTML para invocar un servidor de la pgina PL / SQL


Ejemplo 11-12 muestra un formulario HTML escueto que permite al usuario introducir un precio. La forma invoca el show_product_partial procedimiento almacenado se ilustra en el ejemplo 11-10 y le pasa el valor introducido como el p_minprice parmetro. Para evitar la codificacin de la URL completa del procedimiento almacenado en la ACCIN = atributo del formulario, puede hacer que la forma de un archivo de PSP por lo que reside en el mismo directorio que el archivo PSP que invoca. A pesar de que el archivo HTML contiene cdigo PL / SQL, puede darle una.psp extensin y cargarlo como un procedimiento almacenado en la base de datos. Cuando el product_form procedimiento almacenado se ejecuta a travs de una URL, se muestra el cdigo HTML tal y como aparece en el archivo.

Ejemplo 11-12 product_form.psp


<HTML> <BODY> <FORM method="POST" action="show_product_partial"> <P> Introduzca el precio mnimo que desea pagar:

<INPUT type="text" name="p_minprice"> <input type = "submit "value =" Enviar "> </ FORM> </ BODY> </ HTML>

Incluyendo JavaScript en un archivo PSP


Para producir un archivo HTML elaborada, quizs incluyendo contenido dinmico como JavaScript puede simplificar el cdigo fuente de su aplicacin como una PSP. Esta tcnica evita tener que lidiar con las marcas anidadas comillas, caracteres de escape, literales concatenados y variables, y la sangra del contenido integrado. Ejemplo 11-13 muestra una versin del Ejemplo 11-10 que utiliza JavaScript para visualizar el estado de su pedido en la barra de estado del navegador cuando el usuario mueve su ratn sobre el URL del producto.

Ejemplo 11-13 show_product_javascript.psp


<% @ PLSQL procedimiento = "show_product_javascript"%> <% @ PLSQL parmetro = default "p_minprice" = "100"%> <HTML> <HEAD> <TITLE> Mostrar elementos mayor que la especificada Precio </ TITLE> <SCRIPT LANGUAGE = "JavaScript"> ! <- ocultar texto var = ""; funcin overlink (texto) { window.status = texto; } funcin offlink (texto) { window.status = texto; } / / -> </ SCRIPT> </ HEAD>

<BODY> <P> Este informe muestra los artculos cuyo precio es mayor que <% = p_minprice%>. <P> <UL> <% DE PUNTO IN (SELECT product_name, list_price, catalog_url, product_status DE product_information DONDE list_price> p_minprice ORDER BY DESC list_price) BUCLE%> <LI> artculo = <A HREF = "<% = item.catalog_url%>" onMouseover = "overlink ('ESTADO DE PRODUCTOS: <% = item.product_status%>'); return true " offlink onmouseout = "(''); return true"> <% = item.product_name%> </ A> <BR> Precio = <BIG> <% = item.list_price%> </ BIG> <BR > <% LAZO DEL EXTREMO;%> </ UL> </ BODY> </ HTML>

Depurar pginas PL / SQL Server


A medida que comienzan a experimentar con pginas PL / SQL Server, y como adaptar sus primeras pginas simples en los ms elaborados, tenga en cuenta estas pautas cuando se encuentra con problemas:

El primer paso es conseguir que todo el / la sintaxis SQL PL y PSP sintaxis Directiva derecha. Si comete un error aqu, el archivo no se compila. o Utilice punto y coma para terminar lneas en las que se requiere. o Si un valor debe ser citado, citarlo. Puede que tenga que incluir un valor entre comillas simples (necesario por PL / SQL) dentro de las comillas dobles (que necesita PSP). o Los errores en las directivas de PSP se reportan por lo general a travs de mensajes de sintaxis de PL / SQL. Compruebe que sus directivas utilizan la sintaxis correcta, que las directivas estn bien cerradas, y que estn utilizando el elemento de la derecha (la declaracin, una expresin o bloque de cdigo) en funcin de lo que sucede en su interior.

Nombres de los atributos de PSP entre maysculas y minsculas. La mayora se especifican en minsculas; contentType y errorPage deben especificarse como maysculas y minsculas. Cuando se utiliza un URL para solicitar una PSP, es posible que obtenga un error que el archivo no se encuentra. En este caso: o Asegrese de que usted est solicitando la ruta de acceso virtual a la derecha, dependiendo de la forma en que la puerta de enlace web est configurado. Normalmente, la ruta incluye el nombre de host, opcionalmente, un nmero de puerto, el nombre de esquema y el nombre del procedimiento almacenado (sin. psp extensin). o Si utiliza el reemplazo opcin al compilar el archivo, la versin anterior del procedimiento almacenado se borra. As, despus de una compilacin ha fallado, debe corregir el error o la pgina no est disponible. Es posible que desee probar los nuevos scripts en un esquema por separado, y luego cargarlos en el esquema de produccin. o Si ha copiado el archivo de otro archivo, no olvide cambiar cualquier nombre de procedimiento directivas en la fuente para que coincida con el nuevo nombre de archivo. o Cuando usted consigue un error de archivo no encontrado, solicitar la ltima versin de la pgina la prxima vez. La pgina de error podra ser almacenado en cach por el navegador. Puede que tenga que forzar una recarga de pgina en el explorador para que omita la cach. Cuando se ejecuta el script de PSP, y los resultados vienen de vuelta al navegador, utilizar tcnicas de depuracin estndar para detectar y corregir la salida equivocada. La parte difcil es configurar la interfaz entre los diferentes formularios HTML, scripts y programas CGI para que los valores de la derecha se transmiten en su pgina. La pgina podra devolver un error debido a una falta de coincidencia de parmetros.
o

Lineamientos:
o

Para determinar exactamente lo que se est pasando a su pgina, utilizar METHOD = GET en forma de invocacin para que los parmetros son visibles en la URL. Asegrese de que la forma o el programa CGI que invoca su pgina pasa el nmero correcto de parmetros, y que los nombres especificados por el NAME = atributos en el formulario coincidan con los nombres de los parmetros en el archivo de PSP. Si el formulario se incluye ningn campo de entrada ocultos, o utiliza el NAME = atributo en las Enviar o Restablecer los botones, a continuacin, el archivo PSP debe declarar parmetros equivalentes.

Asegrese de que los parmetros se pueden lanzar de cadena en los tipos PL / SQL correctos. Por ejemplo, no incluir caracteres alfabticos si el parmetro en el archivo de PSP se declara como un NMERO . Asegrese de que la cadena de consulta de la direccin URL se compone de pares de nombre y valor, separados por signos de igualdad, especialmente si usted est pasando parmetros mediante la construccin de un enlace no modificable a la pgina. Si ests pasando un montn de datos de parmetros, tales como cadenas grandes, es posible superar el volumen que se puede pasar conMETHOD = GET . Puede cambiar a method = post en forma de invocacin sin cambiar el archivo de PSP. Aunque los loadpsp nmeros de informes de lnea de comandos correctamente cuando hay un error de sintaxis en el archivo de origen, los nmeros de lnea reportados por los errores de tiempo de ejecucin se refieren a una versin transformada de la fuente y no coinciden con los nmeros de lnea en la fuente original. Cuando se producen errores que producen una traza de error en lugar de la pgina web se esperaba, debe localizar el error a travs de controladores de excepcin y mediante la impresin de salida de depuracin.

Poner PL / SQL Server Pages en Produccin


Antes de poner su solicitud de PSP en la produccin, considerar aspectos como la usabilidad y la velocidad de descarga:

Las pginas pueden ser prestados ms rpido en el navegador si el height = y width = se especifican atributos para todas las imgenes. Es posible estandarizar los tamaos de imgenes, o almacenar la altura y la anchura de las imgenes en la base de datos junto con los datos o URL. Para los espectadores que apaguen los grficos, o que utilizan navegadores alternativos que leen el texto en voz alta, incluyendo una descripcin de las imgenes significativas usando ALT = atributo. Es posible almacenar la descripcin en la base de datos junto con la imagen. Aunque una tabla HTML proporciona una buena forma de mostrar los datos, una tabla grande puede hacer que su aplicacin parece lento. A menudo, el lector ve una pgina en blanco hasta que se descargue toda la tabla. Si la cantidad de datos en una tabla HTML es grande, considerar dividir la salida en varias tablas. Si establece el texto, la fuente, o los colores de fondo, probar la aplicacin con diferentes combinaciones de ajustes de color del navegador: o Pon a prueba lo que sucede si reemplaza slo el color de primer plano en el navegador, o simplemente el color de fondo, o ambos.

Si define un color (como el color del texto en primer plano), ajuste todos los colores a travs de la <BODY> etiqueta, para evitar combinaciones difciles de leer como texto blanco sobre un fondo blanco. o Si utiliza una imagen de fondo, especifique un color de fondo similar al proporcionar un contraste adecuado para los espectadores que no se cargan los grficos. o Si la informacin transmitida por los diferentes colores es fundamental, considerar el uso de una tcnica alternativa. Por ejemplo, usted podra poner un icono junto a los elementos especiales de una tabla. Algunos usuarios podran ver su pgina en una pantalla monocroma o en navegadores que no pueden representar diferentes colores. Proporcionar informacin de contexto impide que los usuarios se pierdan. Incluir un descriptivo <TITLE> etiqueta para tu pgina. Si el usuario es un punto intermedio de un procedimiento, indica que la etapa est representada por su pgina. Proporcionar enlaces a puntos lgicos para continuar con el procedimiento, vuelva al paso anterior, o cancelar el procedimiento completo. Muchas pginas pueden usar un conjunto estndar de los enlaces que se incruste utilizando la directiva include. En los campos de entrada, los usuarios pueden introducir valores incorrectos. Siempre que sea posible, utilice SELECT listas para presentar un conjunto de opciones. Validar el texto introducido en un campo antes de pasarlo a SQL. Cuanto antes se puede validar, mejor, una rutina de JavaScript puede detectar datos incorrectos y solicitar al usuario que corregirlo antes de que pulse el Enviar botn y llamar a la base de datos. Los navegadores tienden a ser indulgentes al mostrar HTML correctos. Lo que se ve bien en un navegador puede quedar mal o no se muestre en absoluto en otro navegador.
o

Lineamientos:
o o

Preste atencin a las reglas HTML para comillas, etiquetas de cierre, y sobre todo por nada que ver con las tablas. Minimizar la dependencia de las etiquetas que slo son compatibles con un solo navegador. A veces usted puede proporcionar una ventaja adicional el uso de tales etiquetas, pero su aplicacin todava debe ser utilizable con otros navegadores. Puede comprobar la validez, e incluso en algunos casos la usabilidad, de su HTML de forma gratuita en muchos sitios en la World Wide Web.

Vous aimerez peut-être aussi