写了一个存储过程,先用SELECT INTO语名将多个数据表连接查询后生成一个局部临时表#abcd ,然后再用Select 语句对临时表进行分组统计,想将分组统计的多行记录结果用ADO的方式返回到VB中,并在卓面表格中显示出来, 
  存储过程在SQL Server查询分析器中执行通过且正确。在VB中调用时出现提示:
过程Proc_Energy01’需要参数 ’@OutParam’,由于本人是初次使用存储过程,所以不知道怎么做,请各位高手指教,存储过程该如何写才行,谢谢!存储过程及VB调用程序如下:
存储过程程序:(用VB创建的存储过程)
CREATE  PROCEDURE Proc_Energy01(@InParam Char(6))
as
     select Q.油田ID,Q.油田名称,R.区块ID,S.井号,年月,日产液,日产油,含水 into #abcd 
        from 油田名称表 Q,油田区块名称表 R,井号名称表 S,产能原始表 T
        where Q.油田ID=R.油田ID AND R.区块ID=S.区块ID AND S.井号=t.井号 and t.年月=@InParam  
        order by Q.油田ID
     select 油田名称,count (*) as 井数,sum(日产液) 日产液,sum(日产油) as 日产油 
         from #abcd           
        group by 油田名称  VB调用程序
Dim Conn As New ADODB.Connection
    Dim cmd As New ADODB.Command
    Dim paraInput As ADODB.Parameter
    Dim rst As ADODB.Recordset
    Set Conn = New ADODB.Connection    
    Set paraInput = New ADODB.Parameter
    Set cmd = New ADODB.Command
    With paraInput
        .Type = adVarChar      '参数类型
        .Size = 6             '参数长度
        .Direction = adParamInput     '参数方向,输入或输出
        .Value =’200707’
    End With
    cmd.Parameters.Append paraInput       '加入参数
    Conn.CursorLocation = adUseClient       '使用由本地游标库提供的客户端游标
    Conn.Open ConnectionString
    Set cmd.ActiveConnection = Conn
    With cmd
        .CommandType = adCmdStoredProc
        .CommandText = "Proc_Energy01"                        '存储过程名
        .CommandTimeout = 15
        .Execute                                                       '运行存储过程
        Set rst = .Execute                                         '如果有记录集返回的写法
    End With

解决方案 »

  1.   

    你可以使用 ADODB.Command 来调用存储过程,如: Dim adoComm As Object 
    '// 创建一个对象,我们用来调用存储过程 
    Set adoComm = CreateObject("ADODB.Command") 
    With adoComm 
    '// 设置连接,假设 adoConn 为已经连接的 ADODB.Connection 对象 
    .ActiveConnection = adoConn 
    '// 类型为存储过程,adCmdStoredProc = 4 
    .CommandType = 4 
    '// 存储过程名称 
    .CommandText = "你的存储过程名称" 
    '// 设置输入参数 
    .Parameters.Item("@输入参数").Value = "值" 
    '// 执行存储过程 
    .Execute If .Parameters.Item("@返回参数名称").Value = True Then Else End If 
    End With 
    '// 释放对象 
    Set adoComm = Nothing
      

  2.   

    能说具体一点吗?就上面的问题,怎么做才能正确解决,我上面用的就是ADODB.COMMAND 呀,老大,你看看上面的程序再说吧