SQL / PSM ( SQL / Módulos almacenados persistentes) es un estándar ISO que define principalmente una extensión de SQL con un lenguaje de procedimiento para su uso en procedimientos almacenados . Publicado inicialmente en 1996 como una extensión de SQL-92 (ISO / IEC 9075-4: 1996, una versión a veces llamada PSM-96 o incluso SQL-92 / PSM [2] ), SQL / PSM se incorporó más tarde a la parte SQL: 1999 estándar, y ha sido parte 4 de ese estándar desde entonces, más recientemente en SQL: 2016. El SQL: 1999 parte 4 cubría menos que el PSM-96 original porque las declaraciones SQL para definir, administrar e invocar rutinas se incorporaron en realidad en la parte 2 SQL / Foundation, dejando solo el lenguaje procedimental en sí mismo como SQL / PSM. [3] Las facilidades de SQL / PSM siguen siendo opcionales en lo que respecta al estándar SQL; la mayoría de ellos se agrupan en Funciones P001-P008.
Paradigma | Multi-paradigma |
---|---|
Apareció por primera vez | 1996 |
Lanzamiento estable | SQL: 2016 |
SO | Multiplataforma (multiplataforma) |
Implementaciones importantes | |
PL / SQL MySQL / MariaDB SQL PL Mimer SQL de IBM | |
Influenciado por | |
PL / SQL Ada [1] |
SQL / PSM estandariza la sintaxis y la semántica para el flujo de control , manejo de excepciones (llamado "manejo de condiciones" en SQL / PSM), variables locales, asignación de expresiones a variables y parámetros, y uso (procedimental) de cursores . También define un esquema de información ( metadatos ) para procedimientos almacenados. SQL / PSM es un lenguaje en el que se pueden definir métodos para los tipos estructurados de SQL: 1999 . El otro es Java, a través de SQL / JRT .
SQL / PSM se deriva, aparentemente directamente, de PL / SQL de Oracle . Oracle desarrolló PL / SQL y lo lanzó en 1991, basando el idioma en el Departamento de Defensa de EE.UU. 's lenguaje de programación Ada . Sin embargo, Oracle se ha mantenido alejado del estándar en su documentación. SQL PL de IBM (utilizado en DB2) y PSM de Mimer SQL [4] fueron los dos primeros productos que implementaron oficialmente SQL / PSM. Se piensa comúnmente que estos dos lenguajes, y quizás también el lenguaje procedimental de MySQL / MariaDB , son los más cercanos al estándar SQL / PSM. [5] [6] Sin embargo, un complemento de PostgreSQL implementa SQL / PSM [7] [8] [9] [10] (junto con sus otros lenguajes de procedimiento como el plpgsql derivado de PL / SQL), aunque no es parte del producto principal. [11]
La funcionalidad RDF en OpenLink Virtuoso se desarrolló completamente a través de SQL / PSM, combinada con tipos de datos personalizados (por ejemplo, ANY
para manejar objetos de relación URI y Literal), indexación sofisticada y opciones flexibles de almacenamiento físico (en columnas o en filas).
Ver también
Las siguientes implementaciones adoptan el estándar, pero no son 100% compatibles con SQL / PSM:
- Funciones y procedimientos almacenados de HSQLDB [12]
- Procedimientos almacenados de MySQL / MariaDB [5] [6]
- Procedimientos SQL de OpenLink Virtuoso (VSP) [13]
- PostgreSQL PL / pgSQL
Propiedad:
- Oracle PL / SQL
- Microsoft y Sybase Transact-SQL
- SQL procedimental innovador [14]
Referencias
- ^ Gulutzan, Peter (2015), Procedimientos almacenados: críticas y defensas
- ^ Eisenberg, A. (1996). "Nuevo estándar para procedimientos almacenados en SQL". Registro ACM SIGMOD . 25 (4): 81–88. doi : 10.1145 / 245882.245907 . S2CID 13023149 .
- ^ Melton, Jim; Simon, Alan R (2002). SQL: 1999 . Morgan Kaufmann. págs. 541–42 . ISBN 978-1-55860-456-8.
- ^ https://developer.mimer.com/article/stored-procedures-in-mimer-sql/
- ^ a b Harrison, Guy; Feuerstein, Steven (2008). Programación de procedimientos almacenados de MySQL . O'Reilly. pag. 49. ISBN 978-0-596-10089-6.
- ^ a b "Procedimientos almacenados" . KnowledgeBase de MariaDB .
- ^ plpsm0 (git) (repositorio).
- ^ Anuncio , PostgreSQL, mayo de 2011.
- ^ "PostgreSQL: Propuesta: PL / pgPSM para 9.3" . www.postgresql.org .
- ^ SQL / PSM (wiki) (manual), PostgreSQL, 2008.
- ^ "Conformidad con SQL" , Documentación (9.2 ed.), PostgreSQL.
- ^ "Capítulo 8. Rutinas invocadas por SQL" . hsqldb.org .
- ^ "Capítulo 11. Guía del lenguaje de procedimientos SQL" . docs.openlinksw.com .
- ^ "Gramática Invantive SQL v2.0" . Invantive .
Otras lecturas
- Jim Melton, Comprensión de los procedimientos almacenados de SQL: una guía completa de SQL / PSM , Morgan Kaufmann Publishers, 1998, ISBN 1-55860-461-8