求教,MS的存储过程中,如何没法返回值呢?

求教,MS的存储过程中,怎么没法返回值呢??
各位高手,情况是这样的:
我在一个ASP.NET页面中调用存储过程Pr_QueryDocument,需要返回一个记录集。
存储过程简化如下:
ALTER PROCEDURE [dbo].[Pr_QueryDocument] 
  @CategoryID int,
  @SN varchar(200),
  @Name varchar(200),
  @sDate varchar(50),
  @eDate varchar(50),
  @Sender varchar(200),
  @SavePlace varchar(50),
  @Cabinet int,
  @Status int
AS

Begin
Declare @Sel As varchar(400)
Set @Sel = 'Selcet * From Document'
Exec(@Sel)
End
其中最后一句改成 Exec sp_execute @Sel也无法返回值。
但是如果直接写成:
ALTER PROCEDURE [dbo].[Pr_QueryDocument] 
  @CategoryID int,
  @SN varchar(200),
  @Name varchar(200),
  @sDate varchar(50),
  @eDate varchar(50),
  @Sender varchar(200),
  @SavePlace varchar(50),
  @Cabinet int,
  @Status int
AS

Begin
  Selcet * From Document
End
又能返回值

请问这是怎么回事呢??
上面中的参数,为了测试暂时没有写入到Select中。因为这个过程是动态查询档案的,所以无法像第二种方法那样直接写查询语句。
在下在这里静候各位高手指导,不吝赐教啊!!

------解决方案--------------------
SQL code
Begin
Declare @Sel As string(400)
Set @Sel = N'Selcet * From Document'
Exec(@Sel)
End

------解决方案--------------------
SQL code

Set @Sel = N'Selcet * From Document' + N'Where CategoryID = ' + @CategoryID
--Where前面要用空格吧
Set @Sel = N'Selcet * From Document' + N' Where CategoryID = ' + @CategoryID

------解决方案--------------------
'''+%+'''