这是一个关于sql server 中的存储过程的问题。我有一个表
两个列:
friendid,my
我的存储过程是这样写的。
create  procedure [dbo].[getFriendList]
@my INT OUTPUT,
@friendid INT output,AS
 select @friendid=my
 from FriendInfo
 where MyID=@MyQQID现在想获取friendid的列表,但是我执行这个,只能获得一个,不能获得多个。事先,我传入了@my这个参数的值,希望返回表中所有有@my这个值的行。是多行的,能弄不?

解决方案 »

  1.   

    存储过程不可以输出表类型的。create  procedure [dbo].[getFriendList]
        @my INT 
    AS
         select my
         from FriendInfo
         where MyID=@My过程你可以这么写.你写的有误.然后前台你直接返回DataSet就行了。
      

  2.   

    /* 准备演示过程 getFriendList,
             * CREATE PROCEDURE [dbo].[getFriendList]  
                AS
                  select 1
                  UNION ALL
                  SELECT 2
                  UNION ALL
                  SELECT 3
             */
            //....
            public DataTable Execute()
            {
                DataTable dt = new DataTable();            SqlConnection conn=new SqlConnection();
                SqlCommand cmd = new SqlCommand("getFriendList", conn);
                cmd.CommandType = CommandType.StoredProcedure;
                conn.Open();
                dt.Load(cmd.ExecuteReader());
                conn.Close();
                return dt;
            }查看返回的dt,里面应该会有1,2,3 3行数据。
      

  3.   

    多谢各位了,我用连接字符串的方式把要获取的值全部链接起来,直接返回了。
    declare @n nvarchar(4000) 
    select @n='' 
    select @n=@n+','+cast(MyID AS varchar(10))  from FriendInfo where FriendID=100001
    select @n=@n+','+cast(FriendID AS varchar(10))  from FriendInfo where MyID=100001
    select @friendid=@n
    这个问题不好描述,楼上两位幸苦了