Académique Documents
Professionnel Documents
Culture Documents
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
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.
Obtener informacin sobre una solicitud HTTP Genera cabeceras HTTP como tipo de contenido y el tipo mime Cookies creados navegador
Tabla 10-1 describe los paquetes PL / SQL Web Toolkit de uso comn.
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:
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 de Oracle Fusion Middleware para Oracle administrador del servidor HTTP para obtener mod_plsql material de
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
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.
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: 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
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
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
PlsqlSessionStateManagement
PlsqlTransferMode PlsqlUploadAsLongRaw
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
Mltiple occurr. No No
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
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');
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');
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 / *');
ANNIMO
. Por
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.
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.
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.
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:
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.
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 .
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');
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.
- 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'.
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 .
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.
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
- 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.
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
epgstat
sql
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.
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
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
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 :
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. /
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
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.
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.
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
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
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.
"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; /
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.
- 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; /
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.
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.
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
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
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:
paquete
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:
paquete
UTL_HTTP
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
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');
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);
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
UTL_HTTPpaquete
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
<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.
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:
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 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.
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.
PSP Element
<% @ Page... %>
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.
Directiva Procedimiento
<% @ Include
...%>
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:
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
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
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.
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 ;%>
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:
Especifique reconoce.
Shift_JIS
Big5
UTF-8
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:
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
<% @ Page language = "PL / SQL" contentType = "text / html" errorPage = "errors.psp" %>
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
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 "%>
Es el nombre del procedimiento, no el nombre del script de PSP, que incluya en la URL.
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"%>
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.
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.
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.
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%>
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%>
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.
. 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;%>
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.
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 .
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.
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>
p_lname
p_fname
parmetro:
http://www.example.com/pls/show_employees?p_lname=Ashdown&p_fname=Lance
Usando
method = post
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.
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
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>
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-9 muestra una variacin ms sofisticada del Ejemplo 11-8 en el que se aade al formato HTML para mejorar la presentacin.
<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>
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.
= 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.
<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>
<INPUT type="text" name="p_minprice"> <input type = "submit "value =" Enviar "> </ FORM> </ BODY> </ HTML>
<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>
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.
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.