SQL3

TRANSFORM 语句示例

此示例使用 SQL TRANSFORM 子句创建交叉表查询显示 1994 年每一季每位员工所接的订单的数目。 该 SQLTRANSFORMOutput 函数对此过程的完成是必须的。

SubSub()

 

    Dim dbs As Database

    Dim strSQL As String

    Dim qdfTRANSFORM As QueryDef

 

    strSQL = "PARAMETERS prmYear SHORT; TRANSFORM " _

        & "Count(OrderID) " _

        & "SELECT FirstName & "" "" & LastName AS " _

        & "FullName FROM Employees INNER JOIN Orders " _

        & "ON Employees.EmployeeID = " _

        & "Orders.EmployeeID WHERE DatePart" _

        & "(""yyyy"", OrderDate) = [prmYear] "

   

    strSQL = strSQL & "GROUP BY FirstName & " _

        & """ "" & LastName " _

        & "ORDER BY FirstName & "" "" & LastName " _

        & "PIVOT DatePart(""q"", OrderDate)"

    

    ' 在您的计算机中修改此行使其正确指到 Northwind 的路径。

    Set dbs = OpenDatabase("Northwind.mdb")

    ' 对运费超过 $100 的订单,

 

    Set qdfTRANSFORM = dbs.CreateQueryDef _

        ("", strSQL)

    

    SQLTRANSFORMOutput qdfTRANSFORM, 1994

    

    dbs.Close

 

End Sub

 

此示例使用 SQL TRANSFORM 子句创建一个稍微复杂的交叉表查询,来显示出每位员工在 1994 年所接订单的总金额。

SubSub()

 

    Dim dbs As Database

    Dim strSQL As String

    Dim qdfTRANSFORM As QueryDef

 

    strSQL = "PARAMETERS prmYear SHORT; TRANSFORM " _

        & "Sum(Subtotal) SELECT FirstName & "" """ _

        & "& LastName AS FullName " _

        & "FROM Employees INNER JOIN " _

        & "(Orders INNER JOIN [Order Subtotals] " _

        & "ON Orders.OrderID = " _

        & "[Order Subtotals].OrderID) " _

        & "ON Employees.EmployeeID = " _

        & "Orders.EmployeeID WHERE DatePart" _

        & "(""yyyy"", OrderDate) = [prmYear] "

   

    strSQL = strSQL & "GROUP BY FirstName & "" """ _

        & "& LastName " _

        & "ORDER BY FirstName & "" "" & LastName " _

        & "PIVOT DatePart(""q"",OrderDate)"        

        

    ' 在您的计算机中修改此行使其正确指到 Northwind 的路径。

    Set dbs = OpenDatabase("Northwind.mdb")

    ' 对运费超过 $100 的订单,

 

    Set qdfTRANSFORM = dbs.CreateQueryDef _

        ("", strSQL)

    

    SQLTRANSFORMOutput qdfTRANSFORM, 1994

    

    dbs.Close

 

End Sub

 

Function SQLTRANSFORMOutput(qdfTemp As QueryDef, _

    intYear As Integer)

    

    Dim rstTRANSFORM As Recordset

    Dim fldLoop As Field

    Dim booFirst As Boolean

 

    qdfTemp.PARAMETERS!prmYear = intYear

    Set rstTRANSFORM = qdfTemp.OpenRecordset()

    

    Debug.Print qdfTemp.SQL

    Debug.Print

    Debug.Print , , "Quarter"

 

    With rstTRANSFORM

        booFirst = True

        For Each fldLoop In .Fields

            If booFirst = True Then

                Debug.Print fldLoop.Name

                Debug.Print , ;

                booFirst = False

            Else

                Debug.Print , fldLoop.Name;

            End If

        Next fldLoop

        Debug.Print

        

        Do While Not .EOF

            booFirst = True

            For Each fldLoop In .Fields

                If booFirst = True Then

                    Debug.Print fldLoop

                    Debug.Print , ;

                    booFirst = False

                Else

                    Debug.Print , fldLoop;

                End If

            Next fldLoop

            Debug.Print

            .MoveNext

        Loop

    End With

    

End Function

 


&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&

CREATE TABLE 语句,CONSTRAINT 子句示例

此示例命名查询为 CategoryList。

此示例调用过程 EnumFields 过程,且可以在 SELECT 语句示例中找到该过程。

Sub ProcedureX()

 

    Dim dbs As Database, rst As Recordset

    Dim qdf As QueryDef, strSql As String

    

    ' 在您的计算机中修改此行使其正确指到 Northwind 的路径。

    Set dbs = OpenDatabase("Northwind.mdb")

    ' 对运费超过 $100 的订单,

    

    strSql = "PROCEDURE CategoryList; " _

        & "SELECT DISTINCTROW CategoryName, " _

        & "CategoryID FROM Categories " _

        & "ORDER BY CategoryName;"

    

    ' 创建基于 SQL 语句的 QueryDef 的名称。

    '

    Set qdf = dbs.CreateQueryDef("NewQry", strSql)

 

    ' 创建暂时的快照类型记录集。

    Set rst = qdf.OpenRecordset(dbOpenSnapshot)

    ' populateRecordset。

    rst.MoveLast

            

    ' 调用 EnumFields 来打印记录集的内容。

    '传递记录集对象和要求的字符宽度。

    '

    EnumFields rst, 15

    

    ' 删除 QueryDef 因为这是一个演示。

    '

    dbs.QueryDefs.Delete "NewQry"

    

    dbs.Close

 

End Sub

 


PROCEDURE 子句

给查询定义一个名称和可选参数s


注意: PROCEDURE 子句 已被 PROCEDURE 语句取代。尽管PROCEDURE 子句仍受支持,但 PROCEDURE 语句会提供PROCEDURE 子句容量的超集,而且语句也是推荐语法。


语法

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

PROCEDURE 子句可分为以下几个部分:

部分说明
name过程的名称。它应遵循标准命名公约
param1, param2一个或更多的字段名或参数。例如:

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

欲知更多参数信息,请看参数.

datatype基本 Microsoft Jet SQL数据类型或其同义字之一。

说明

由 PROCEDURE 子句(指定过程名称的)、可选的参数定义列表和单个 SQL 语句组成的 SQL 过程。例如,过程 Get_Part_Number 可以运行一个检索指定部分的号码的查询。


注意

  • 如果子句包含一个以上的字段定义 (即,param-datatype 对),用逗点将它们分隔。
  • PROCEDURE 子句 应后接 SQL 语句 (如 SELECTUPDATE 语句)。
请参阅

DELETE 语句 (Microsoft Jet SQL)PARAMETERS 声明 (Microsoft Jet SQL)
EXECUTE 语句 (Microsoft Jet SQL)SELECT 语句 (Microsoft Jet SQL)
Microsoft Jet 数据库引擎 SQL 的数据类型UPDATE 语句 (Microsoft Jet SQL)

示例

CREATE PROCEDURE 语句,PROCEDURE 子句示例


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值