[code=SQL][
create proc test
@tableName nvarchar(50),
@lie nvarchar(50),
@can nvarchar(50)
as
 declare @setsql varchar(5000) 
 set @setsql=
'select * from ' +convert(nvarchar(20),@tableName)+'
where '+convert(nvarchar(20),@lie)+'='
+convert(nvarchar(20),@can)+ ' order by id'
exec @setsql
go
exec test 'testType','name','lihao'
服务器: 消息 2812,级别 16,状态 62,行 11
未能找到存储过程 'select * from testType
where name=lihao order by id'。
/code]

解决方案 »

  1.   


     create proc test
    @tableName nvarchar(50),
    @lie nvarchar(50),
    @can nvarchar(50)
    as
     declare @setsql varchar(5000)  
     set @setsql=
    'select * from ' +convert(nvarchar(20),@tableName)+'
    where '+convert(nvarchar(20),@lie)+'='
    +convert(nvarchar(20),@can)+ ' order by id'
    exec @setsql
    go
    exec test 'testType','name','lihao'
    服务器: 消息 2812,级别 16,状态 62,行 11
    未能找到存储过程 'select * from testType
    where name=lihao order by id'。
      

  2.   

    exec(@setsql)
      

  3.   

    create proc test
    @tableName nvarchar(50),
    @lie nvarchar(50),
    @can nvarchar(50)
    as
     declare @setsql varchar(5000)  
     set @setsql=
    'select * from ' +convert(nvarchar(20),@tableName)+'
    where '+convert(nvarchar(20),@lie)+'='
    +convert(nvarchar(20),@can)+ ' order by id'
    exec(@setsql)
    go
    exec test 'testType','name','lihao'
      

  4.   

    create proc test
    @tableName nvarchar(50),
    @lie nvarchar(50),
    @can nvarchar(50)
    as
     declare @setsql varchar(5000)  
     set @setsql=
    'select * from ' +convert(nvarchar(20),@tableName)+'
    where '+convert(nvarchar(20),@lie)+'='
    +convert(nvarchar(20),@can)+ ' order by id'
    exec (@setsql)---加括号
    go
    exec test 'testType','name','lihao'