第一个问题?
declare @RecordCount int
select @RecordCount=count(perid) from person本来的语句如上
但是后面那个判断比较复杂,是查询的,用了动态的sql语句,然后这句话该怎么写?
exec('select @RecordCount=count(perid) from'+@sql)
这样写提示变量@recordCount未声明?我该怎么把查询出来的结果count(perid)赋给@RecordCount,麻烦大家帮忙啦,谢谢第二个问题?
三个表连在一起进行查询,怎么样写效率更高?我现在用的是动态sql,因为条件太多,我把连接的语句写在下面(大家不要笑,我是菜鸟),要改成怎样,效率会更高:
select *
from 
person
full join personjob on personjob.perid=person.perid
full join person_info on person_info.perid=personjob.perid没办法,分少而且发了两个问题,请大家帮帮忙

解决方案 »

  1.   

    declare @RecordCount int,@sql nvarchar(1000)
    set @sql=N'select @RecordCount=count(perid) from '+@sql
    exec sp_executesql @sql,N'RecordCount int output',RecordCount 
    select RecordCount
      

  2.   

    楼上的大哥,因为语法检查有错,我把你的语句改成了,错了不要笑,我实在是菜:
    set @sql=N'select @RecordCount=count(perid) from '+@sql
    exec sp_executesql @sql,N'RecordCount int output',@RecordCount 
    select @RecordCount
    但是执行的时候,又提示:过程需要参数 '@statement' 为 'ntext/nchar/nvarchar' 类型
    麻烦再帮帮,万分感谢,这个问题昨天搞了一下午兼晚上,已经快晕了
      

  3.   

    @sql nvarchar(1000)--类型为nvarchar
    declare @RecordCount int,@sql nvarchar(1000)
    set @sql=N'select @RecordCount=count(perid) from '+@sql
    exec sp_executesql @sql,N'RecordCount int output',@RecordCount output'
    select @RecordCount
      

  4.   

    @sql nvarchar(1000)--类型为nvarchar
    declare @RecordCount int,@sql nvarchar(1000)
    set @sql=N'select @RecordCount=count(perid) from '+@sql
    exec sp_executesql @sql,N'RecordCount int output',@RecordCount output
    select @RecordCount
      

  5.   

    继续请教楼上的大哥
    我是用了两个储存过程,一个读全部的数据,一个按查询结果读数据为什么读全部数据的我这句就可以通过:
    declare @RecordCount int
    select @RecordCount=count(perid) from person而带条件的那个用了你给的办法之后,按道理也是一样,因为只取了@RecordCount
    declare @RecordCount int
    set @sql=N'select @RecordCount=count(person.perid) from '+@sql
    exec sp_executesql @sql,N'@RecordCount int output',@RecordCount output
                             --^--这个位置我加了个@符号结果提示如:选定数据源上未能找到名称为“realname”的字段或属性,但是如果我在上面的语句中加入字段后如:
    set @sql=N'select @RecordCount=count(person.perid),realname from '+@sql
    后会提示:向变量赋值的 SELECT 语句不能与数据检索操作结合使用这些问题该怎么解决?再次麻烦楼上的大哥帮帮看一下,万分感谢!!
      

  6.   

    set @sql=N'select @RecordCount=count(person.perid),realname from '+@sql+' where realname ='+@变量条件 --加条件
    楼主把你的语句完整的贴出来
      

  7.   

    set @sql='select '+@RecordCount+'=count(perid) from '+@sql
    exec(@sql)
    这样就可以了!
    要显示@RecordCount变量的内容,是不能直接放到字符串里的。