declare @p1 char(10)
exec yoursp @p1 output
select @p1 as p1
然后在你的Client取这个数据集中的这条记录的p1.

解决方案 »

  1.   

    调用以后你可以直接访问你的ADOSTOREDPROC的哪个OUTPUT参数
    adostoredproc1.ExecProc;
    edit1.Text:=varToStr(adostoredproc1.Parameters.ParamByName('xyz').Value);
      

  2.   

    Fields->GetItem("p1")->Value 出错 :在对应所需名称或序数的集合中,未找到项目。
      

  3.   

    我用 pRs->GetRecordCount() 试了,会出错:对象关闭时,不允许操作。是怎么回事呢? Recordset不是刚刚被打开吗?
      

  4.   

    你应说明你用的DBMS.如果是MS SQL Server:
    首先,你的SQL语句应正确(可在查询分析器中调试),一般情况下,应该只有一个数据集,如果有多个数据集,可考虑2种方法:
    1. 使用你Client端开发工具提供的存储过程调用控件的参数得到返回值;
    2. 使用你Client端开发工具提供的访问多个数据集的方法得到第2以及其它的数据集。你用什么Client端开发工具?
      

  5.   

    TO:nononono我用的是MSSQL在 exec myproc @p1 output时,@p1是一个int型变量,所以用 select @p1 as p1时一定只有一条记录,而且我也在查询分析器中试过。我用的VC,你说的用它得到返回值是什么意思?
      

  6.   

    http://www.csdn.net/expert/topic/602/602890.xml?temp=.3741876我替你找到这个帖子,你一看就知道了。
      

  7.   

    http://www.csdn.net/expert/topic/622/622725.xml?temp=.6494715
    http://www.csdn.net/expert/topic/658/658479.xml?temp=.8258173
    http://www.csdn.net/expert/topic/662/662339.xml?temp=5.376834E-02
      

  8.   

    还是给你一个现成的例子罢!
    1、Sp(存储过程)
    /*
     功     能:    
        验证用户名和密码是否正确(校验用户名和密码;登陆用) 输入参数(可选):
        LoginName    :    登陆名
        PSW        :    登陆密码 返回值:    
        0      :     没有符合条件的记录(登陆名名和密码不正确)
        >=1    :    找到符合条件的记录(登陆名和密码正确,校验通过)
    */
    CREATE PROCEDURE BCLHR.sp_ChkPsw
        @LoginName char(10) = '',     -- '' default value
        @PSW char(30) = ''     -- '' default value
    AS    Set Nocount ON    Declare @Count AS Int    -- Get values.
        Select @Count = (Select count(psw)  From T_EmpDetail    Where    LoginName=@LoginName and PSW = @PSW)    -- 如果找到用户的话则返回相关的 EmpID,否则返回空字符串
        IF @Count > = 1 
            Begin
                Select    EmpID    From    T_EmpDetail    Where    LoginName=@LoginName and PSW = @PSW
            End
        Else
            Begin
                Select ''
            End
    GO2、DLL:
    '
    '功能: 验证用户名和密码是否正确(校验用户名和密码;登陆用)
    '
    Public Function ChkPSW( _
        ByVal LoginName As String, _
        ByVal PSW As String _
    ) As String
        
    On Error GoTo ErrorProcess
        
        Dim p_RS As ADODB.Recordset
        Dim p_Cmd As Command
        
        m_SuccessOrNot = False
        
        '' Initialize ADO Connection
        Set p_RS = New ADODB.Recordset
        Set p_Cmd = New Command
        
        '' Open ADO connection
        p_Cmd.ActiveConnection = G_ADO_ConStr
        p_Cmd.CommandText = "Sp_ChkPSW"
        p_Cmd.CommandType = adCmdStoredProc
        p_Cmd.Parameters.Refresh
        
        '' 创建存储过程参数
        p_Cmd.Parameters("@LoginName") = LoginName
        p_Cmd.Parameters("@PSW") = PSW
        
        '' 执行存储过程,并将结果集合返回
        Set p_RS = p_Cmd.Execute
        
        '' 赋结果
        ChkPSW = p_RS(0)
        
        '' 置函数执行成功标志
        m_SuccessOrNot = True
        
        Exit Function
        
    '' 出错处理程序段
    ErrorProcess:
        m_SuccessOrNot = False
        ChkPSW = ""
        Err.Raise Err.Number, Err.Source, Err.DescriptionEnd Function 
     
      

  9.   

    续上篇)
    3、登陆
    ' 检查密码是否正确
    '
    Private Sub cmdchkPSW_Click()On Error GoTo ErrorProcess    Dim Obj1 As Object
        Dim sTmp As String
        Dim sTmp2 As String
        Dim iTmp As Integer
        
        Set Obj1 = CreateObject("ProjName.clsUser")
        
        sTmp = Trim(txt1)
        sTmp2 = Trim(txt2)
        iTmp = Obj1.ChkPSW(sTmp, sTmp2)
        
        MsgBox iTmp
        
        Exit Sub
        
    ErrorProcess:
        Err.Raise Err.Number, Err.Source, Err.Description
    End Sub4、Now is OK!