1请问test1,test2存储过程含义是否相同
2如何在页面中调用test1存储过程返回的值
简写如下:
SqlParameter[]  para=new  SqlParameter( "@UserID ",   SqlDbType.Int,   4) 
parameters[""@UserID"].Direction   =   ParameterDirection.Output;调用@BusinessID 的返回值 
但如何调用return的返回的值,望大家指点
create PROCEDURE [dbo].[test1]
@StaffID numeric(5) , @FixingID numeric(5) , @BusinessID numeric(5) OUTPUTAS        INSERT INTO TBL_Business        (N_StaffID , N_FixingID)         VALUES         (@StaffID , @FixingID)        SET  @BusinessID= @@IDENTITY         RETURN @@rowcount
create PROCEDURE [dbo].[test2]@StaffID numeric(5) , @FixingID numeric(5) , @BusinessID numeric(5) OUTPUT, @Row output intAS        INSERT INTO TBL_Business        (N_StaffID , N_FixingID)         VALUES         (@StaffID , @FixingID)        SET  @BusinessID= @@IDENTITY         set @Row =@@RowCount

解决方案 »

  1.   

    1请问test1,test2存储过程含义是否相同 ----------
    不相同
      

  2.   

    那如何理解,都是返回值-------------
    output参数可以有多个,可以是除ntext,image,nbinary之外的所有类型
    返回值只能有一个,而且必须是整型
      

  3.   

    如何在页面中调用return的返回值,output的返回值知道调用
    SqlParameter[]   para=new     SqlParameter(   "@UserID   ",       SqlDbType.Int,       4)   
    parameters[""@UserID"].Direction    =     ParameterDirection.Output;调用@BusinessID   的返回值
      

  4.   


    在数据库访问层写个方法:
    public int  ExecoutID(string cmdtext,SqlParameter[] paras)
    {
    if(conn.State!=ConnectionState.Open)
    {
    conn.Open();
    }
    SqlCommand cmd=new SqlCommand();
    cmd.Connection=conn;
    cmd.CommandText=cmdtext;
    cmd.CommandType=CommandType.StoredProcedure;
    int  MAXID=0;
    if(paras!=null && paras.Length>0)
    {
    for(int i=0 ; i<paras.Length;i++)
    {
    cmd.Parameters.Add(paras[i]);

    }
    }
    try
    {

    cmd.ExecuteNonQuery();
    if(paras!=null && paras.Length>0)
    {
    for(int i=0 ; i<paras.Length;i++)
    {
    if(paras[i].Direction==ParameterDirection.Output)
    {
    MAXID= Convert.ToInt32(paras[i].Value);
    }

    }
    }

    return MAXID; }
    实体类里面这样写: 
    public int sfadd()
    {
    SqlParameter[] paras=new SqlParameter[2];
    paras[1]=new SqlParameter("@city",SqlDbType.VarChar,50);
    paras[1].Value=city;
    paras[0]=new SqlParameter("@id",SqlDbType.Int);
    paras[0].Direction=ParameterDirection.Output;

    return db.ExecoutID("test1",paras);
    }在界面层就可以调用sfadd()方法取到返回值了。