Вы находитесь на странице: 1из 4

********************* PSM (Persistent Stored Modules)El estndar SQL/PSM (PSM por Persistent Stored Modules), especifica lasintaxis de la lgica

procedimental de los mdulos del servidor de SQL. Ya enlos aos noventa del siglo 20 era evidente que la norma ANSI SQL carece de medios para crear procedimientos almacenados (especialmente trabajando conv a r i a b l e s y c o n t r o l d e f l u j o - b u c l e s y c o n d i c i o n a l e s ) . L a s b a s e s d e d a t o s comerciales empezaron a aplicar sus propios lenguajes propietarios para estef i n . L o s m s p o p u l a r e s incluyen PL / SQL (Oracle, 1992), T-SQL (Sybase yM i c r o s o f t , 1 9 9 5 ) y S P L ( I n f o r m i x , 1 9 9 6 ) . D e s d e 1 9 9 0 u n g r u p o d e desarrolladores de todo Jim Melton, parte de la comisin de ANSI SQL para lasn o r m a s , c o m e n z a t r a b a j a r e n e s t e p r o b l e m a . E n 1 9 9 8 , u n pro yecto d e lanueva norma se con virti en parte de S QL3 - b ajo el no mbre d e SQL / P S M ( A N S I / I S O / I E C 9 0 7 5 - 4 : 1 9 9 9 ) . D e s a f o r t u n a d a m e n t e e n e s e m o m e n t o l a mayora de las grandes empresas tienen sus propios idiomas (incompatible conel estndar) y se neg a abandonar a favor de la norma. SQL / PSM se llev acabo slo en los RDBMS, en los que no haba apoyo para los procedimientosalmacenados antes de 1998. Excepto para DB2 (PL SQL, IBM, 2001), todos ellos eran menores RDBMS: Miner, slido, Servidor 602SQL. Despus de 2005,el estndar SQL / PSM comenz a ser ms populares, cuando se llev a cabo enA d v a n t a g e D a t a b a s e S e r v e r ( S y b a s e i A n y w h e r e , 2 0 0 5 ) , M y S Q L ( 2 0 0 5 ) y PostgreSQL (2007). Implementacin de SQL / PSM suele ser incompleta, PL S Q L en DB2 es con siderada co mo una d e las mejores implementacion es. Aplicacin de P o s t g r e S Q L s e l l a m a P L / p g P S M ( u t i l i z a n d o e l e s q u e m a d e nomenclatura estndar en PostgreSQL). Instrucciones con PL / pgPSM: Antes de escribir cdigo en PL / pgPSM sew debe seguir los siguientesconsejos: Utilizar el estndar de codificacin recomendado. Usar comentarios y nombres de variables claros. Utilizar una identacin de bloque coherente. No escribir un procedimiento largo (mximo 50 lneas).Hay tambin algunas recomendaciones adicionales para los lenguajes engeneral SQL para procedimientos almacenados: Uso de un prefijo y un nombre de atributo calificado para evitar conflicto denombres de atributos y variables. Utilizar el control de excepciones consistentes. Evitar la programacin ISAM Si es posible use SQL. Tener cuidado acerca de los recursos uso limitado de cursores y tablastemporales. No modificar los datos de disparadores (tiggers)

http://es.scribd.com/doc/41629903/PSM ********************* SQL/PSM: _ Persistent Stored Modules _ Especifica la sintxis y semntica del lenguaje para declarar y mantener mdulos persistentes en un servidor SQL. _ Extiende SQL hacindolo un lenguaje completo computacionalmente. _ Permite almacenar mdulos como elementos de un esquema de base de datos. SQL/PSM incluye: _ Sentencias para dirigir el flujo de control. _ Asignacin del resultado de expresiones a variables y parmetros. _ Especificacin de manejadores de condiciones que

permiten a las rutinas trabajar con diversas condiciones durante su ejecucin. _ Sentencias para condiciones de seales. _ Declaraciones de cursores y variables locales.

http://personales.unican.es/zorrillm/BDAvanzadas/Teoria/bda-t2-trans.pdf *********************

Crear procedimientos almacenados (motor de base de datos)


SQL Server 2008 R2 Otras versiones

Personas que lo han encontrado til: 1 de 2 - Valorar este tema

Puede crear procedimientos almacenados mediante la instruccin CREATE PROCEDURE de Transact-SQL. Antes de crearlos, tenga en cuenta lo siguiente:

Las instrucciones CREATE PROCEDURE no se pueden combinar con otras instrucciones SQL en el mismo lote. Para crear procedimientos, debe disponer del permiso CREATE PROCEDURE en la base de datos y del permiso ALTER en el esquema donde se crea el procedimiento. En procedimientos almacenados CLR, debe ser propietario del ensamblado al que se hace referencia en <method_specifier> o disponer del permiso REFERENCES en dicho ensamblado. Los procedimientos almacenados son objetos de mbito de esquema y sus nombres deben ajustarse a las reglas para los identificadores. Slo puede crear un procedimiento almacenado en la base de datos actual.

Cuando cree un procedimiento almacenado, deber especificar lo siguiente:


Todos los parmetros de entrada y de salida del lote o del procedimiento que realiza la llamada. Las instrucciones de programacin que realicen operaciones en la base de datos, incluidas las llamadas a otros procedimientos.

El valor de estado devuelto al lote o al procedimiento que realiza la llamada, a fin de indicar que la operacin se ha realizado correctamente o que se ha producido un error (y el motivo del mismo). Las instrucciones de control de errores necesarias para detectar y administrar posibles errores. Las funciones de control de errores tales como ERROR_LINE y ERROR_PROCEDURE se pueden especificar en el procedimiento almacenado. Para obtener ms informacin, vea Usar TRY...CATCH en Transact-SQL.

Asignar nombre a los procedimientos almacenados

Se recomienda que no cree procedimientos almacenados con el prefijo sp_. SQL Server utiliza el prefijo sp_ para indicar procedimientos almacenados del sistema. El nombre que elija puede entrar en conflicto con algn procedimiento futuro del sistema. Si la aplicacin utiliza referencias de nombre completo que no son de esquema y el nombre de su procedimiento entra en conflicto con un procedimiento del sistema, la aplicacin generar un error ya que el nombre se enlaza con el procedimiento del sistema, no con el suyo. Un procedimiento almacenado definido por el usuario, con el mismo nombre que un procedimiento almacenado del sistema y que no est calificado o se encuentre en el esquema dbo no se ejecutar nunca; siempre se ejecutar el procedimiento almacenado del sistema. En el ejemplo siguiente se muestra este comportamiento.
Copiar
USE AdventureWorks2008R2; GO CREATE PROCEDURE dbo.sp_who AS SELECT FirstName, LastName FROM Person.Person; GO EXEC sp_who; EXEC dbo.sp_who; GO DROP PROCEDURE dbo.sp_who; GO

Si se utiliza un calificador de esquema explcito tambin se consigue una ligera mejora del rendimiento. La resolucin de nombres es un poco ms rpida si Motor de base de datos no tiene que buscar en varios esquemas para encontrar el procedimiento. Para obtener ms informacin, vea Ejecutar procedimientos almacenados (motor de base de datos).
Procedimientos almacenados temporales

De forma similar a las tablas temporales, los procedimientos almacenados temporales (tanto privados como globales) se pueden crear agregando los prefijos # y ## delante del nombre del procedimiento. # denota un procedimiento almacenado temporal local; ## denota un procedimiento almacenado temporal global. Estos procedimientos dejan de existir cuando se cierra SQL Server. Los procedimientos almacenados temporales son tiles para conectarse a versiones anteriores de SQL Server que no permiten volver a utilizar los planes de ejecucin para instrucciones o lotes de Transact-SQL. Las aplicaciones que se conecten a SQL Server 2000 y versiones posteriores deben utilizar el procedimiento almacenado del sistema sp_executesql, en vez de procedimientos almacenados temporales. Slo puede ejecutar un procedimiento temporal local la conexin que lo cre; el procedimiento se elimina automticamente cuando se cierra la conexin. Cualquier conexin puede ejecutar un procedimiento almacenado temporal global. ste existe hasta que se cierra la conexin que el usuario utiliz para crearlo, y hasta que se completan todas las versiones del procedimiento que se estuvieran ejecutando mediante otras conexiones. Una vez cerrada la conexin que se utiliz para crear el procedimiento almacenado temporal, ste ya no se puede volver a ejecutar. Slo podrn finalizar las conexiones que hayan empezado a ejecutar el procedimiento almacenado. Si se crea directamente en la base de datos tempdb un procedimiento almacenado sin el prefijo # o ##, el procedimiento en cuestin se eliminar automticamente cuando se cierre SQL Server, ya que tempdb se vuelve a crear cada vez que se inicia SQL Server. Los procedimientos creados directamente en tempdb existen incluso despus de haber finalizado la conexin en que se crearon.
http://msdn.microsoft.com/es-es/library/ms190669(v=sql.105).aspx *********************

Вам также может понравиться