我想返回数据集 又想得到存储过程output中的参数,同事存储过程中还有需要传进去的参数,而只有一个output,要详细的,100分全给一人~~

解决方案 »

  1.   

    C#调用存储过程 返回值,输出参数,返回结果集 
    http://blog.csdn.net/xys_777/archive/2010/06/21/5684442.aspx
      

  2.   

    随便手写的一个、 应该差不多吧ALTER PROCEDURE [dbo].[proc_output]
    @name nvarchar(50),
    @Flag int output  --返回的值
    AS
    BEGIN
         if (条件)
    set @Flag=1
           if(条件)
                   set  @Flag=2
    END  
            public int output(string name)
            {
                try
                {
                    SqlParameter[] parameters = {
    new SqlParameter("@name", SqlDbType.NVarChar,50),
                        new SqlParameter("@Flag",SqlDbType.Int,4)};
                    parameters[0].Value = name ;
                    parameters[1].Direction = ParameterDirection.Output;  //接受从数据库返回的值
                    help.executeNonQuery("proc_output", parameters);   //help :实例化的help类
                    return Convert.ToInt32(parameters[1].Value);    //返回接收值
                }
                catch (Exception ex)
                {
                    throw ex;
                }
            }
      

  3.   

      我是真对返回参数写的  然后获取数据集的话应该很简单了吧、在存储过程里面返回查询数据  
    dataset _ds = help.executeDataSet("proc_output",parameters);
      

  4.   

    SqlConnection sqlconn = new SqlConnection(conn);
            SqlCommand cmd = new SqlCommand();
            cmd.Connection = sqlconn;
            cmd.CommandText = "过程名";
            cmd.CommandType = CommandType.StoredProcedure;
            // 创建参数
            IDataParameter[] parameters = {
                    new SqlParameter("@Id", SqlDbType.Int,4) ,
                    new SqlParameter("@Name", SqlDbType.NVarChar,15) ,
                    new SqlParameter("@val", SqlDbType.Int,4)                   // 返回值
                };
            // 设置参数类型
            parameters[0].Direction = ParameterDirection.Output;        // 设置为输出参数
            parameters[1].Value = "Name";                   // 给输入参数赋值
            parameters[2].Direction = ParameterDirection.ReturnValue;   // 设置为返回值
            // 添加参数
            cmd.Parameters.Add(parameters[0]);
            cmd.Parameters.Add(parameters[1]);
            cmd.Parameters.Add(parameters[2]);        SqlDataAdapter dp = new SqlDataAdapter(cmd);
            DataSet ds = new DataSet();
            // 填充dataset
            dp.Fill(ds); parameters[0].Value.ToString()set  @id = @@IDENTITY
    select * from Tb
    return @@rowcount
      

  5.   


    CREATE PROCEDURE sp_AccountRole_Create
    @CategoryID int,
    @RoleName nvarchar(10),
    @Description nvarchar(50),
    @RoleID int output
    AS
        DECLARE @Count int    -- 查找是否有相同名称的记录
        SELECT @Count = Count(RoleID) FROM Account_Role WHERE
            RoleName = @RoleName    IF @Count = 0        INSERT INTO Account_Role 
            (CategoryID, RoleName, Description) valueS
            (@CategoryID, @RoleName, @Description)        SET @RoleID = @@IDENTITY        RETURN 1
    GOSqlConnection DbConnection = new SqlConnection(mConnectionString);
    SqlCommand command = new SqlCommand( "sp_AccountRole_Create", DbConnection );
    DbConnection.Open(connectString);
    // 废置SqlCommand的属性为存储过程
    command.CommandType = CommandType.StoredProcedure;
    command.Parameters.Add("@CategoryID", SqlDbType.Int, 4);
    command.Parameters.Add("@RoleName", SqlDbType.NVarChar, 10);
    command.Parameters.Add("@Description", SqlDbType.NVarChar, 50);
    command.Parameters.Add("@RoleID", SqlDbType.Int, 4);
    // 返回值
    command.Parameters.Add("Returnvalue",
                SqlDbType.Int,
                4,        // Size
                ParameterDirection.Returnvalue,
                false,        // is nullable 
                0,        // byte precision
                0,        // byte scale
                string.Empty,
                DataRowVersion.Default,
                null );command.parameters["@CategoryID"].value = permission.CategoryID;
    command.parameters["@RoleName"].value = permission.PermissionName;
    command.parameters["@Description"].value = permission.Description;
    // 可以返回新的ID值
    command.parameters["@RoleID"].Direction = ParameterDirection.Output;int rowsAffected = command.ExecuteNonQuery();
    int result = command.parameters["Returnvalue"].value;
    int newID = command.parameters["@RoleID"].value;
    可以得到三个值,分别是行影响值,存储过程返回值,新的ID值。
      

  6.   

     Open();
                    SqlCommand comm = new SqlCommand();
                    comm.Connection = con;
                    comm.CommandType = CommandType.StoredProcedure;
                    comm.CommandText = "PROC_FENYE";
                    // 创建参数
                    IDataParameter[] parameters = {
                    new SqlParameter("@PageCount", SqlDbType.Int,4) ,
                    new SqlParameter("@PageSize", SqlDbType.Int,4) ,
                    new SqlParameter("@PageIndex", SqlDbType.Int,4) ,
                    new SqlParameter("@Condition", SqlDbType.NVarChar,1000),
                    new SqlParameter("@OrderBy", SqlDbType.NVarChar,50)// 返回值
                    };
                    parameters[0].Direction = ParameterDirection.Output; // 设置为输出参数
                    parameters[1].Value = PageSize; // 给输入参数赋值
                    parameters[2].Value = PageIndex; // 给输入参数赋值
                    parameters[3].Value = Where; // 给输入参数赋值
                    parameters[4].Value = OrderBy; // 给输入参数赋值
                    //parameters[2].Direction = ParameterDirection.ReturnValue; // 设置为返回值                //设置参数
                    comm.Parameters.Add(parameters[0]);
                    comm.Parameters.Add(parameters[1]);
                    comm.Parameters.Add(parameters[2]);
                    comm.Parameters.Add(parameters[3]);
                    comm.Parameters.Add(parameters[4]);
                    RePageCount = Convert.ToInt32(parameters[0].Value);
                    SqlDataAdapter adapter = new SqlDataAdapter(comm);
                    DataSet ds = new DataSet();
                    adapter.Fill(ds);               
                    Close();
                    return ds.Tables[0];这里那里错了?
      

  7.   

     Open();
                    SqlCommand comm = new SqlCommand();
                    comm.Connection = con;
                    comm.CommandType = CommandType.StoredProcedure;
                    comm.CommandText = "PROC_FENYE";
                    // 创建参数
                    IDataParameter[] parameters = {
                    new SqlParameter("@PageCount", SqlDbType.Int,4) ,
                    new SqlParameter("@PageSize", SqlDbType.Int,4) ,
                    new SqlParameter("@PageIndex", SqlDbType.Int,4) ,
                    new SqlParameter("@Condition", SqlDbType.NVarChar,1000),
                    new SqlParameter("@OrderBy", SqlDbType.NVarChar,50)// 返回值
                    };
                    parameters[0].Direction = ParameterDirection.Output; // 设置为输出参数
                    parameters[1].Value = PageSize; // 给输入参数赋值
                    parameters[2].Value = PageIndex; // 给输入参数赋值
                    parameters[3].Value = Where; // 给输入参数赋值
                    parameters[4].Value = OrderBy; // 给输入参数赋值
                    //parameters[2].Direction = ParameterDirection.ReturnValue; // 设置为返回值                //设置参数
                    comm.Parameters.Add(parameters[0]);
                    comm.Parameters.Add(parameters[1]);
                    comm.Parameters.Add(parameters[2]);
                    comm.Parameters.Add(parameters[3]);
                    comm.Parameters.Add(parameters[4]);
                    RePageCount = Convert.ToInt32(parameters[0].Value);
                    SqlDataAdapter adapter = new SqlDataAdapter(comm);
                    DataSet ds = new DataSet();
                    adapter.Fill(ds);               
                    Close();
                    return ds.Tables[0];
      

  8.   

    大概是这样
    SqlConnection sqlconn = new SqlConnection();
                sqlconn.ConnectionString = "省略";
                sqlconn.Open();
                SqlCommand sqlcomm = new SqlCommand();
                sqlcomm.CommandType = CommandType.StoredProcedure;
                sqlcomm.Connection = sqlconn;
                sqlcomm.CommandText = "xxxx";
                SqlDataAdapter sqlda = new SqlDataAdapter(sqlcomm);
                DataSet ds = new DataSet();
                sqlda.Fill(ds);
                if (ds.Tables.Count > 0)
                { 
                    //Do sth ds.Tables[0]
                    //Do sth ds.Tables[1]
                }http://www.hbtiantai.cn