sp_password返回0(成功)或 1(失败)
代码如下:
cSQL="EXEC sp_password '123','321'"
Set cmd = New ADODB.Command
cmd.ActiveConnection = cn
cmd.CommandText = csql
Set rs4 = cmd.Execute()没有OUTPUT参数,怎么获取返回值?

解决方案 »

  1.   

    dim intRst as int
    intRst=0
    .........
    Set rs4 = cmd.Execute(intRst)
      

  2.   

    Dim m_cmd           As New ADODB.Command
    if rs4.state=adstateopen then rs4.close
     
    Dim m_intRst   As int
    m_intRst=1    '初值:失败
    With m_cmd
        .ActiveConnection = cn
        .CommandType = adCmdStoredProc
        .CommandText = "sp_password"
        '一下传参语句要根据自己的存储过程修改,其中 40/100为参数长度
        .Parameters.Append .CreateParameter("@Column", adVarChar, , 40, m_StrColumn)
        .Parameters.Append .CreateParameter("@Value", adVarChar, , 100, m_strValue)
        rs4=.Execute(m_intRst)
        if m_intRst=1 then
           '失败处理
        else
           '成功处理
        endif
           
    End With
        
      

  3.   

    一般我将@@RowCount返回(或当作输出参数)
    if @@@@RowCount=0 then
       '失败处理
    else
       '有@@RowCount条记录修改成功
    endif
      

  4.   

    .Parameters.Append .CreateParameter@old", adVarChar, , 40, m_StrColumn)
    .Parameters.Append .CreateParameter@new ", adVarChar, , 100, m_strValue)
    我试了,执行SP_PASSWORD存储过程(rs4=.Execute(m_intRst))后m_intRst的值不变化,初值是多少,执行后还是多少。
      

  5.   

    就是SP_PASSWORD存储过程,修改密码的。
      

  6.   

    我试过了,确实不行
    可我以前的代码为什么行得通呢
    查了帮助才知道,execute返回的就是@@RowCount
    恰巧我用的也是他
      

  7.   

    我看了一下sp_password:
      -- FINALIZATION: RETURN SUCCESS/FAILURE --
    if @@error <> 0
            return (1)
        raiserror(15478,-1,-1)
    return  (0) -- sp_password
    觉得他是用return(1)表示有错误
    并且抛出了一个错误
    所以不用计较返回值
    只要捕获这个错误,进行相应处理就行了