举例:
use pubs
gocreate procedure myproc @ioparam int output as
select * from stud
select @ioparam=88
return 99
go
vb代码
Dim rs As New ADODB.Recordset
Dim cm As New ADODB.Command
Dim pm As New ADODB.Parameter
cm.ActiveConnection = "DSN=pubs;uid=sa"
cm.CommandText = "myproc"
cm.CommandType = adCmdStoredProc
Set pm = cm.CreateParameter("return", adInteger, adParamReturnValue, , 0)
cm.Parameters.Append pm
Set pm = cm.CreateParameter("output", adInteger, adParamOutput, , 0)
cm.Parameters.Append pm
Set rs = cm.Executers.Close
  
Debug.Print cm(0)
Debug.Print cm(1)注意必须在rs关闭之后,才行

解决方案 »

  1.   

    smartdonkey(聪明的毛驴):你比110还快,PFPF
      

  2.   

    我遇到的是“没有执行可选特性”错误,靠,搞了1天还没解决55555555555Public Function Addbasis() As Boolean
      Dim Comm As New ADODB.Command
      'On Error Resume Next
      Set Comm.ActiveConnection = CsiLogin.Con
      Comm.CommandText = "ztby.dbo.ztadd"
      Comm.CommandType = adCmdStoredProc
      Comm.Parameters.Append Comm.CreateParameter("code", adInteger, adParamOutput, , 0)
      Comm.Parameters.Append Comm.CreateParameter("name", adChar, adParamInput, 8, mvarName)
      Comm.Parameters.Append Comm.CreateParameter("sfz", adChar, adParamInput, 18, mvarSfz)
      Comm.Parameters.Append Comm.CreateParameter("adddate", adDate, adParamInput, , mvarAddDate)
      Comm.Parameters.Append Comm.CreateParameter("zgbm_id", adInteger, adParamInput, , mvarZgbm_Id)
      Comm.Parameters.Append Comm.CreateParameter("dy", adCurrency, adParamInput, , mvarDy)
      Comm.Parameters.Append Comm.CreateParameter("dyonce", adCurrency, adParamInput, , mvarDyonce)
      Comm.Parameters.Append Comm.CreateParameter("bank_id", adInteger, adParamInput, , mvarBank_id)
      Comm.Parameters.Append Comm.CreateParameter("postno", adChar, adParamInput, 6, mvarPostNo)
      Comm.Parameters.Append Comm.CreateParameter("addr", adChar, adParamInput, 100, mvarAddr)
      CsiLogin.Con.Errors.Clear
      Comm.Execute
      Addbasis = (CsiLogin.Con.Errors.Count = 0)
      If Addbasis Then mvarCode = Comm(0)
    End Function
     
    CsiLogin.Con是建立的全局连接
    ztby.dbo.ztadd 是存储过程名,用RDO应该是{call ?=ztby.dbo.ztadd(?,?,?,?,?,?,?,?)}
    而用上面语句的话()ado,单步跟踪是{call ztby.dbo.ztadd(?,?,?,?,?,?,?,?,?)}
     
    另外,我在SQL上有2个数据库csimis和ztby,会不会是ODBC连接时不知道连到哪里去?而我VB程序中需要用到上面2个数据库啊!
     
    是不是vb或odbc或ado的版本问题或者是系统问题吗?