PROCEDURE 句 (Microsoft Access SQL)

適用先: Access 2013、Office 2013

クエリの名前と省略可能なパラメーターを定義します。

注:

[!メモ] PROCEDURE 句は PROCEDURE ステートメントに換わりました。 現在も PROCEDURE 句はサポートされていますが、PROCEDURE ステートメントは PROCEDURE 句の機能も備えているため、こちらを使用することを推奨します。

構文

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

PROCEDURE 句には、次の指定項目があります。

パーツ 説明
name プロシージャの名前。 名前付け規則に従った名前を指定します。
param1param2 1 つ以上のフィールド名またはパラメーター。 例:

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

パラメーターの詳細については、「 パラメーター」を参照してください。
datatype Microsoft Access SQL データ型の 1 つ、またはその別名のうちの 1 つを指定します。

解説

SQL のプロシージャは、プロシージャ名を指定する PROCEDURE 句、パラメーター定義のリスト (省略可能)、および 1 つの SQL ステートメントで構成されます。 たとえば、Get_Part_Number というプロシージャを作成して、特定の部品番号を取得するクエリを実行できます。

注:

  • 句に複数のフィールド定義 (つまり、 param-datatype のペア) が含まれている場合は、コンマで区切ります。
  • PROCEDURE 句に続けて SELECTUPDATE などの SQL ステートメントを記述する必要があります。

この例では、クエリを CategoryList と名付け、EnumFields プロシージャを呼び出します。EnumFields プロシージャについては、SELECT ステートメントの使用例を参照してください。

    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