set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
goCreate PROCEDURE [dbo].[Links_GetList]
  @strwhere varchar(3000)
AS Select 
L.[Rid],L.[LinkName],L.[LinkUrl],L.[PicPath],L.[Memo],L.[adddate] 
From 
T_links as L怎样把 @strwhere 加入到该存贮过程中(不要用exec 执行sql 语句的方法)。

解决方案 »

  1.   

    set ANSI_NULLS ON 
    set QUOTED_IDENTIFIER ON 
    go Create PROCEDURE [dbo].[Links_GetList] 
      @strwhere varchar(3000) 
    AS EXEC
    ('Select 
    L.[Rid],L.[LinkName],L.[LinkUrl],L.[PicPath],L.[Memo],L.[adddate] 
    From 
    T_links as L WHERE 1=1 AND '+@strwhere+')只能EXEC
      

  2.   

    EXEC
    ('Select 
    L.[Rid],L.[LinkName],L.[LinkUrl],L.[PicPath],L.[Memo],L.[adddate] 
    From 
    T_links as L WHERE 1=1 AND '+@strwhere+')
      

  3.   

    怎么都是EXEC这种方法,没别的吗?或者换个解决方法也可以,只要实现功能就行。
      

  4.   

    有没有通用的GetList方法,用存贮过程实现的!能够得到自己想要的记录集。
      

  5.   

    没有。除非你把条件都传进来。一一判断
    如:create proc wsp
    @name varchar(10)=null,
    @sex varchar(2)=null
    as
        select * from 表名 where name=isnull(@name,name) and sex=isnull(@sex,sex)
    go--调用时不想传参,直接不指定参数值就行了。如:
    exec wsp @name='ttt'
    --或者:
    exec wsp @sex='男'
    --或者:
    exec wsp @name='aadf',@sex='男'
      

  6.   

    Select 
    L.[Rid],L.[LinkName],L.[LinkUrl],L.[PicPath],L.[Memo],L.[adddate] 
    From 
    T_links as L  //给表取别名要用“as”?