存储过程为
CREATE PROCEDURE sys_eventlogproc 
@reader int 
AS
select * from ht_eventlog where readerid=@reader and progress=0
GO在VB中的调用为
Dim cmdEvent As New ADODB.Command  
Dim rstOutEvent As New ADODB.Recordset
cmdEvent.CommandText = "sys_eventlogproc"
cmdEvent.CommandType = adCmdStoredProc
cmdEvent.ActiveConnection = dbMain 'dbMain为Connection对象
cmdEvent.Parameters("@reader") = OutReaderid
Set rstOutEvent = cmdEvent.Execute如果存储过程有输出参数
Parameters("@输出参数")  返回输出参数的值

解决方案 »

  1.   

    多谢echeng192(阿飞) 兄!
    如果我的存储过程有3个输入参数,@input1, @input2, @input3 有两个输出参数 @output1 output, @output2 output调用时的格式应该怎么写呢?
      

  2.   

    建立存储过程:  
    Create procedure AddOne
        (  @input1 varchar(10),
           @input2 varchar(10),
           ...................  ---输入参数
           @output1    numeric output,
           ............................) ---输出参数
     as 
        begin
          
           select @output1=serial,@output2=..... from serial 
        end   调用: Dim cmdEvent As New ADODB.Command  
    Dim rstOutEvent As New ADODB.Recordset
    cmdEvent.CommandText = "sys_eventlogproc"
    cmdEvent.CommandType = adCmdStoredProc
    cmdEvent.ActiveConnection = dbMain 'dbMain为Connection对象
    cmdEvent.Parameters("@input1") = a
    ....................................
    Set rstOutEvent = cmdEvent.Executeout1=cmdEvent.Parameters("@output1")
    ................. 
      

  3.   

    可以这样试试:建立存储过程:  
    Create procedure test
        (  @input1 varchar(10),
           @input2 varchar(10),
           @output1    numeric output,
           @output2    numeric output) ---输出参数
     as 
     ............................................  调用: Dim cn As New ADODB.Connection 
    Dim rs As New ADODB.Recordset
    Dim s  AS strings = "test @input1,@input2,0,0"
    Set rs = cn.Execute(s)
    Text1.Text = rs(0)
    Text2.Text = rs(1)
    本方法适用于“Select”不是很多的存储过程
      

  4.   

    用connection 和command对象都可以,可以参考一下楼上各位的方法
      

  5.   

    ---- VB做为快速应用开发(RAD)工具越来越得到开发人员的认可和接受。它对许多API(如ODBC API、SOCKET API等等)的封装使得编程变得简单起来。同时,它支持集成开发环境下的可视化、事件驱动、面向对象等编程特点。下面,我们谈谈在VB中调用存储过程的实现方法及其注意事项。 ---- 我们知道,VB的数据库编程有许多种方法,比如直接用ODBC API编程,这种方法灵活、高效,程序员可以实现对数据库复杂的控制;也可以用VB中的数据对象,如RDO(远程数据对象)、DAO(数据访问对象)、ADO(ActiveX 数据对象),这种方法实现起来方便、快捷,但灵活性较差一些。由于存储过程在实现数据封装、隐藏以及代码的预编译、减少网络负载、维护方便等优点,所以被许多RDBMS和编程工具做支持。VB中的各类数据对象也提供对存储过程的支持。 ---- 我们以ADO为例来说明其实现的步骤 ---- 1. 创建、调试存储过程。你可以在数据库中也可以在其他外挂程序的支持下进行存储过程的创建和调试工作。本例中的存储过程代码如下(使用PUBS的MS SQL中的例子库 ): CREATE PROCEDURE myprocedure
    @job_id smallint,
    @job_lvl tinyint
    AS
    SELECT *
    FROM employee
    WHERE job_id < @job_id 
    AND job_lvl > @job_lvl
    ---- 2. 在VB中生成一个新的工程,工程有一窗体,一个COMMAND(NAME:COMMAND1) 按钮,一个 MSFlexGrid(NAME:MSFlexGrid1)控件。 
    ---- 3. 创建连接ADO connection; ---- 4. 创建命令ADO command; ---- 5. 创建参数并设置各个参数的属性; ---- 6. 执行ADO command; ---- 7. 对数据进行处理;MSFlexGrid显示查询到的数据 ---- 8. 释放连接,退出程序。 ---- 其中代码如下: 在窗体中声明以下变量:
    Dim cnn1 As ADODB.Connection ‘连接
    Dim mycommand As ADODB.Command ‘命令
    Dim parm_jobid As ADODB.Parameter ‘参数1
    Dim parm_joblvl As ADODB.Parameter ‘参数2
    Dim rstByQuery As ADODB.Recordset ‘结果集
    Dim strCnn As String ‘连接字符串在窗体的LOAD事件中加入如下代码:
    Set cnn1 = New ADODB.Connection 
    ‘生成一个连接
    strCnn = "DSN=MYDSN;uid=sa;pwd="
    ‘创建的系统数据源MYDSN指向PUBS数据库
    cnn1.Open strCnn ‘打开连接
    在窗体的UNLOAD中的加入代码如下:
    cnn1.Close ‘关闭连接
    Set cnn1 = Nothing ‘释放连接在按钮中的代码如下:
    Dim i As integer
    Dim j as integer 
    Set parm_jobid = New ADODB.Parameter
    Set mycommand = New ADODB.Command
    ' parm_jobid.Name = "name1" 
    this line can be ommited
    parm_jobid.Type = adInteger ‘