Wikipedia

SQL/PSM

SQL/PSM
ParadigmMulti-paradigm
First appeared1996
Stable release
SQL:2016
OSCross-platform (multi-platform)
Major implementations
PL/SQL
MySQL/MariaDB
IBM's SQL PL
Mimer SQL
Influenced by
PL/SQL
Ada[1]

SQL/PSM (SQL/Persistent Stored Modules) is an ISO standard mainly defining an extension of SQL with a procedural language for use in stored procedures. Initially published in 1996 as an extension of SQL-92 (ISO/IEC 9075-4:1996, a version sometimes called PSM-96 or even SQL-92/PSM[2]), SQL/PSM was later incorporated into the multi-part SQL:1999 standard, and has been part 4 of that standard since then, most recently in SQL:2016. The SQL:1999 part 4 covered less than the original PSM-96 because the SQL statements for defining, managing, and invoking routines were actually incorporated into part 2 SQL/Foundation, leaving only the procedural language itself as SQL/PSM.[3] The SQL/PSM facilities are still optional as far as the SQL standard is concerned; most of them are grouped in Features P001-P008.

SQL/PSM standardizes syntax and semantics for control flow, exception handling (called "condition handling" in SQL/PSM), local variables, assignment of expressions to variables and parameters, and (procedural) use of cursors. It also defines an information schema (metadata) for stored procedures. SQL/PSM is one language in which methods for the SQL:1999 structured types can be defined. The other is Java, via SQL/JRT.

SQL/PSM is derived, seemingly directly, from Oracle's PL/SQL. Oracle developed PL/SQL and released it in 1991, basing the language on the US Department of Defense's Ada programming language. However, Oracle has maintained a distance from the standard in its documentation. IBM's SQL PL (used in DB2) and Mimer SQL's PSM[4] were the first two products officially implementing SQL/PSM. It is commonly thought that these two languages, and perhaps also MySQL/MariaDB's procedural language, are closest to the SQL/PSM standard. [5] [6] However, a PostgreSQL addon implements SQL/PSM[7][8][9][10] (alongside its other procedural languages like the PL/SQL-derived plpgsql), although it is not part of the core product.[11]

RDF functionality in OpenLink Virtuoso was developed entirely through SQL/PSM, combined with custom datatypes (e.g., ANY for handling URI and Literal relation objects), sophisticated indexing, and flexible physical storage choices (column-wise or row-wise).

See also

The following implementations adopt the standard, but they are not 100% compatible to SQL/PSM:

Open source:

Proprietary:

References

  1. ^ Gulutzan, Peter (2015), Stored Procedures: critiques and defences
  2. ^ Eisenberg, A. (1996). "New standard for stored procedures in SQL". ACM SIGMOD Record. 25 (4): 81–88. doi:10.1145/245882.245907. S2CID 13023149.
  3. ^ Melton, Jim; Simon, Alan R (2002). SQL: 1999. Morgan Kaufmann. pp. 541–42. ISBN 978-1-55860-456-8.
  4. ^ https://developer.mimer.com/documentation/sql/stored-procedures-in-mimer-sql/
  5. ^ a b Harrison, Guy; Feuerstein, Steven (2008). MySQL Stored Procedure Programming. O'Reilly. p. 49. ISBN 978-0-596-10089-6.
  6. ^ a b "Stored Procedures". MariaDB KnowledgeBase.
  7. ^ plpsm0 (git) (repository).
  8. ^ Announce, PostgreSQL, May 2011.
  9. ^ "PostgreSQL: Proposal: PL/pgPSM for 9.3". www.postgresql.org.
  10. ^ SQL/PSM (wiki) (manual), PostgreSQL, 2008.
  11. ^ "SQL Conformance", Documentation (9.2 ed.), PostgreSQL.
  12. ^ "Chapter 8. SQL-Invoked Routines". hsqldb.org.
  13. ^ "Chapter 11. SQL Procedure Language Guide". docs.openlinksw.com.
  14. ^ "Invantive SQL v2.0 Grammar". Invantive.

Further reading

  • Jim Melton, Understanding SQL's Stored Procedures: A Complete Guide to SQL/PSM, Morgan Kaufmann Publishers, 1998, ISBN 1-55860-461-8
This article is copied from an article on Wikipedia® - the free encyclopedia created and edited by its online user community. The text was not checked or edited by anyone on our staff. Although the vast majority of Wikipedia® encyclopedia articles provide accurate and timely information, please do not assume the accuracy of any particular article. This article is distributed under the terms of GNU Free Documentation License.

Copyright © 2003-2025 Farlex, Inc Disclaimer
All content on this website, including dictionary, thesaurus, literature, geography, and other reference data is for informational purposes only. This information should not be considered complete, up to date, and is not intended to be used in place of a visit, consultation, or advice of a legal, medical, or any other professional.