PROCEDURE Clause

Description

Defines a name and optional parameters for a query.

Syntax

PROCEDURE name [param1 datatype[, param2 datatype[, ...]]

The PROCEDURE clause has these parts:

Part

Description

name

A name for the procedure. It must follow standard naming conventions.

param1, param2

One or more field names or parameters. For example:

PROCEDURE Sales_By_Country [Beginning Date]
DateTime, [Ending Date] DateTime;

For more information on parameters, see PARAMETERS.

datatype

One of the primary Microsoft Jet SQL data types or their synonyms.


Remarks   An SQL procedure consists of a PROCEDURE clause (which specifies the name of the procedure), an optional list of parameter definitions, and a single SQL statement. For example, the procedure Get_Part_Number might run a query that retrieves a specified part number.

Notes

  • If the clause includes more than one field definition (that is, param-datatype pairs), separate them with commas.
  • The PROCEDURE clause must be followed by an SQL statement (for example, a SELECT or UPDATE statement).
See Also

DELETE statement, Parameter object ("DAO Language Reference"), PARAMETERS Declaration, SELECT statement, UPDATE statement.

Specifics (Microsoft Access)

When you copy a PROCEDURE clause into SQL view, Microsoft Access removes the clause from the SQL statement when you switch to another view. Removing the PROCEDURE clause doesn't affect the results of the query. If the PROCEDURE clause includes parameters, Microsoft Access replaces the PROCEDURE reserved word and the name argument with the PARAMETERS reserved word. The defined parameters aren't removed.

Example

This example names the query CategoryList.

This example calls the EnumFields procedure, which you can find in the SELECT statement example.

Sub ProcedureX()

    Dim dbs As Database, rst As Recordset
    Dim qdf As QueryDef, strSql As String

    ' Modify this line to include the path to Northwind
    ' on your computer.
    Set dbs = OpenDatabase("Northwind.mdb")

    strSql = "PROCEDURE CategoryList; " _
        & "SELECT DISTINCTROW CategoryName, " _
        & "CategoryID FROM Categories " _
        & "ORDER BY CategoryName;"

    ' Create a named QueryDef based on the SQL
    ' statement.
    Set qdf = dbs.CreateQueryDef("NewQry", strSql)

    ' Create a temporary snapshot-type Recordset.
    Set rst = qdf.OpenRecordset(dbOpenSnapshot)
    ' Populate the Recordset.
    rst.MoveLast
            
    ' Call EnumFields to print the contents of the
    ' Recordset. Pass the Recordset object and desired
    ' field width.
    EnumFields rst, 15

    ' Delete the QueryDef because this is a
    ' demonstration.
    dbs.QueryDefs.Delete "NewQry"

    dbs.Close

End Sub