2.1.1.33 T321, Basic SQL-invoked routines
V0033:
The specification states the following:
-
Subclause 11.60, "<SQL-invoked routine>": NOTE — "Routine" is the collective term for functions, methods, and procedures. This feature requires a conforming SQL-implementation to support both user-defined functions and user-defined procedures. An SQL-implementation that conforms to Core SQL shall support at least one language for writing routines; that language may be SQL. If the language is SQL, then the basic specification capability in Core SQL is the ability to specify a one-statement routine. Support for overloaded functions and procedures is not part of Core SQL. <SQL-invoked routine> ::= <schema routine> <schema routine> ::= <schema procedure> | <schema function> <schema procedure> ::= CREATE <SQL-invoked procedure> <schema function> ::= CREATE <SQL-invoked function> <SQL-invoked procedure> ::= PROCEDURE <schema qualified routine name> <SQL parameter declaration list> <routine characteristics> <routine body> ... <SQL parameter declaration list> ::= <left paren> [ <SQL parameter declaration> [ { <comma> <SQL parameter declaration> }... ] ] <right paren> <SQL parameter declaration> ::= [ <parameter mode> ] [ <SQL parameter name> ] <parameter type> [ RESULT ] <parameter mode> ::= IN | OUT | INOUT Subclause 11.62, "<drop routine statement>" — If Feature T041, "Basic LOB data type support", is supported, then the <locator indication> clause shall also be supported <drop routine statement> ::= DROP <specific routine designator> <drop behavior>
Microsoft SQL Server 2008 R2 and Microsoft SQL Server 2012 vary as follows:
Transact-SQL partially supports this feature. The Transact-SQL CREATE FUNCTION and CREATE PROCEDURE statements do not support the IN, INOUT, or LANGUAGE keywords.