DECLARE  @DynamicQuerySql  NVARCHAR(MAX)
SET @DynamicQuerySql=''
EXEC (' SELECT '+@DynamicQuerySql=@DynamicQuerySql+'FQuerySql FROM TField_DataFreeToExcel '消息 102,级别 15,状态 1,第 3 行
'=' 附近有语法错误。我必须要在EXEC  执行
如果直接写SQL语句非动态 DECLARE  @DynamicQuerySql  NVARCHAR(MAX)
SET @DynamicQuerySql=''
SELECT @DynamicQuerySql=@DynamicQuerySql+FQuerySql FROM TField_DataFreeToExcel 
SELECT @DynamicQuerySql
这样执行 数据都累加到DynamicQuerySql变量上了但我必须用动态的方式  请大家帮帮忙 谢谢了 

解决方案 »

  1.   

    CREATE FUNCTION FUN_TEST
    RETURNS NVARCHAR(MAX)
    AS
    BEGIN
    DECLARE  @DynamicQuerySql  NVARCHAR(MAX)
    SET @DynamicQuerySql=''
    SELECT @DynamicQuerySql=@DynamicQuerySql+FQuerySql FROM TField_DataFreeToExcel 
    RETURN @DynamicQuerySql
    ENDDECLARE @STR NVARCHAR(MAX)
    SELECT @STR=DBO.FUN_TEST()
      

  2.   

    DECLARE  @DynamicQuerySql  NVARCHAR(MAX)
    declare @s nvarchar(2000)
    SET @DynamicQuerySql=''
    set @s = ' SELECT @DynamicQuerySql='+@DynamicQuerySql+'FQuerySql FROM TField_DataFreeToExcel '
    sp_executesql @s,'@dynamicquerysql varchar(1000) output',@DynamicQuerySql  out
    select @DynamicQuerySql  
      

  3.   

    DECLARE  @DynamicQuerySql  NVARCHAR(MAX)
    declare @s nvarchar(4000) 
    set @s = ' SELECT @DynamicQuerySql='+@DynamicQuerySql+'FQuerySql FROM TField_DataFreeToExcel ' 
    exec ('DECLARE  @DynamicQuerySql  NVARCHAR(MAX) SET @DynamicQuerySql='''' '+@s+
    'select @DynamicQuerySql  '
    )....
      

  4.   

    石头哥 这里 少了个EXEC DECLARE  @DynamicQuerySql  NVARCHAR(MAX)
    declare @s nvarchar(2000)
    SET @DynamicQuerySql=''
    set @s = ' SELECT @DynamicQuerySql='+@DynamicQuerySql+'FQuerySql FROM TField_DataFreeToExcel '
    exec sp_executesql @s,'@dynamicquerysql varchar(1000) output',@DynamicQuerySql  out
    select @DynamicQuerySql 
      

  5.   


    DECLARE  @DynamicQuerySql  NVARCHAR(MAX)
    SET @DynamicQuerySql=''
    EXEC (' SELECT @DynamicQuerySql=@DynamicQuerySql'+'FQuerySql FROM TField_DataFreeToExcel '
      

  6.   

    改成这样,加个N 加个exec DECLARE  @DynamicQuerySql  NVARCHAR(MAX) 
    declare @s nvarchar(2000) 
    SET @DynamicQuerySql='' 
    set @s = N' SELECT @DynamicQuerySql='+@DynamicQuerySql+'FQuerySql FROM TField_DataFreeToExcel ' 
    exec sp_executesql @s,N'@dynamicquerysql varchar(1000) output',@DynamicQuerySql  out 
    select @DynamicQuerySql  不过 @DynamicQuerySql  查询出来 只有一条数据(最后一条) 而我的TField_DataFreeToExcel表中是有3条数据 石头大侠 急救
      

  7.   

    用没有办法在exec()中执行啊 
    用sp_executesql我的改动量太多了
    再次谢谢
      

  8.   

    5楼加个SET @DynamicQuerySql=''
    select @DynamicQuerySql 改变量也是最后一条数据
      

  9.   

    你想显示成什么样子 都显示的话 直接动态DECLARE  @DynamicQuerySql  NVARCHAR(MAX)EXEC (' SELECT  FQuerySql FROM TField_DataFreeToExcel ')
      

  10.   


    DECLARE  @DynamicQuerySql  NVARCHAR(MAX)
    SET @DynamicQuerySql=''
    EXEC (' SELECT @DynamicQuerySql'=@DynamicQuerySql+'FQuerySql FROM TField_DataFreeToExcel '
      

  11.   


    DECLARE @A TABLE ( [name]  varchar(1000)) 
    INSERT INTO @A
    SELECT '大' UNION ALL
    SELECT '家' UNION ALL
    SELECT '好'DECLARE @Sql as nvarchar(4000)
    SET @Sql=''
    SELECT @Sql=@Sql+'-----'+[name] FROM @A
    SELECT @Sql这个就是我要的效果
    不过要放在exec()中执行
    我的exec()里面还会有很多局部变量