首先通过创建asp组件函数,调用页面的编辑框值,得到输入参数,然后,判断组件函数使用存储过程得到的返回值是1的话,就继续执行,得出输出参数,在页面表单上的表赋值或给成label值也可。    CREATE PROCEDURE dbo.getUserName
       --为了加深对"顺序"的印象,将以下两参数的定义顺序颠倒一下
       @UserName varchar(40) output,
       @UserID int
    as
    set nocount on
    begin
       if @UserID is null return
       select @UserName=username 
           from dbo.[userinfo] 
           where userid=@UserID
       if @@rowcount>0
          return 1
       else
          return 0
       return
    end
    go    '**调用同时具有返回值、输入参数、输出参数的存储过程**

解决方案 »

  1.   

    其实没有你想那么复杂,我给你变通一下,你看看是否可以:CREATE PROCEDURE dbo.getUserName
           --为了加深对"顺序"的印象,将以下两参数的定义顺序颠倒一下
           --@UserName varchar(40) output,--此句删掉
           @UserID int
        as
        set nocount on
        begin
           declare @username varchar(40)
           set @username = ""
           if @UserID is null return
           select @UserName=username 
               from dbo.[userinfo] 
               where userid=@UserID
           if @@rowcount>0
              --return 1更改开始,此句删掉
                select '1' result,@username msg
           else
              --return 0
                 select '0' result,'错误信息' msg
           return
        end
        go
    程序中用EXEC执行这个存储过程,得到返回值result,msg 同时判断,如果result = "1" 则将msg赋值给你要的,否则显示msg错误信息
    -------------------------------------
    看看可以不可以。
      

  2.   

    不知道你究竟问的什么?
    存储过程写的也正确,也满足了你的所有条件,你要怎么样?
    如果要在程序中获取的话command里的parameter也有output选项,return的值也可以用@RETURNVALUE直接获取.
    你究竟在搞什么?
      

  3.   

    写法一样,接收的时候参数和返回值都在command的Parameters里面
      

  4.   

    例如这个是我做的。
    //存储过程
    CREATE PROCEDURE dbo.sp_chf
    (@yhm    char(20) )AS 
    declare @gesh tinyintselect  @gesh=count(yhm)  from zcb  where yhm=@yhmif @gesh<>0
    return 1
    else
    return 0
    GO//组件
    imports system
    imports system.data
    imports system.data.sqlclientnamespace aapublic class userpublic  objconn as new sqlconnection("server=(local);uid=sa;pwd=;database=text" )
    public  objcmd as sqlcommand
    public function chf(stryhm as string) as string
     objcmd =new sqlcommand("sp_chf",objconn)
     objcmd.commandtype=commandtype.storedprocedure dim objreturn as new sqlparameter("@return_value",sqldbtype.int)
     objreturn.direction=parameterdirection.returnvalue
     objcmd.parameters.add(objreturn) dim objparam as new sqlparameter("@yhm",sqldbtype.varchar,20)
     objparam.value=stryhm
     objcmd.parameters.add(objparam)
    try
    objcmd.connection.open()
    objcmd.ExecuteNonQuery
    objcmd.connection.close()
    if objreturn.value=1 then
    return "重复"
    else
    return "不重复"
    end if
    catch ex as sqlexception
    throw ex
    end try
    end functionend class
    end namespace//页面
    <%@ page language="vb"%>
    <%@ import namespace="system.data" %>
    <%@ import namespace="system.data.sqlclient" %>
    <%@ import namespace="aa" %>
    <script runat="server">sub xsh(obj as object,e as eventargs)
    dim objuser as new userlblmessage.text=objuser.chf(tbyhm.text)end sub
    </script><html><body>
    <form runat="server">
    <asp:label id="lblmessage"  runat="server"/>
    <asp:textbox id="tbyhm" runat="server"/><asp:button id="btsubmit" runat="server" onclick="xsh" text="submit" />
    </form>
    </body></html>现在清楚没有。这是一个取返回值的,如果向问题中的有输入参数、输出参数、返回值勤,这个组件怎么写呀。页面怎么写