try:SET @SSQL = '
SELECT TOP ' + CAST(@__LastIndex AS NVarchar) + '@SKeys = '' + @SKeys + CASE WHEN @Index >= ' + CAST(@__FirstIndex AS Nvarchar) + '
THEN  ''''''+CAST(UserID AS Nvarchar)  + '''''','' 
ELSE '''' END,
@Index = @Index + 1
FROM dbo.Tbl_User'
+ @__WhereClause + '
ORDER BY ' + @__SortField + @__Order

解决方案 »

  1.   

    THEN  CAST(UserID AS Nvarchar)  + '','' ==>THEN  CAST(UserID AS Nvarchar)  + ''','''
      

  2.   

    都不行呢,CAST(UserID AS Nvarchar) 是在Then语句后面的好像本身就被一个单引号引住的,会不会和这个有关系
      

  3.   

    应该用8个引号:SET @SSQL = '
    SELECT TOP ' + CAST(@__LastIndex AS NVarchar) + '
    @SKeys = '' + @SKeys + CASE WHEN @Index >= ' + CAST(@__FirstIndex AS Nvarchar) + '
    THEN  ''''''''+CAST(UserID AS Nvarchar)+''''''''  + '','' 
    ELSE '''' END,
    @Index = @Index + 1
    FROM dbo.Tbl_User'
    + @__WhereClause + '
    ORDER BY ' + @__SortField + @__Order
      

  4.   

    create table A
    (
      UserID varchar(20)
    )
    insert A
    select 'AAA' union
    select 'BBB'--测试
    declare @sql nvarchar(100),@s varchar(200)
    set @s=''
    set @sql=N'select @s=@s+'',''+''''''''+UserID+'''''''' from A'
    exec sp_executesql @sql,N'@s varchar(200) output',@s output
    select @s--删除测试环境
    drop table A--结果
    /*
    ,'AAA','BBB'
    */
      

  5.   

    用'char(39)'你可以用select 'char(39)'看看效果你就知道了
      

  6.   

    用'char(39)'你可以用select 'char(39)'看看效果你就知道了
      

  7.   

    select char(39)没有引号,呵呵,错了
      

  8.   

    create procedure mp_test
    @test char(10) /*假如是输入参数*/
    declare @sql varchar(50)
    set @sql='select * from table where name='''+@test+'''' /*加单引号*/
    exec(@sql)
    GO
      

  9.   


    eprint自定义打印是一个页面套打工具.它直接在IE浏览器中可视化的设计各种复杂的打印模版,
    能够解决在IE浏览器中打印各种复杂的中国式报表及票据。详见: http://218.30.103.110:8080/eprint/index.htm
    方成eform自定义表单平台,纯BS结构.100%开放源码.可以在 http://218.30.103.110:8080/eform/index.html 在线试用.
      

  10.   


    THEN  '"'+CAST(UserID AS Nvarchar)+'"'字符串连接,俺只能实现双引号,单引号好像不行!
      

  11.   

    SET @SSQL = '
    SELECT TOP ' + CAST(@__LastIndex AS NVarchar) + '
    @SKeys = '' + @SKeys + CASE WHEN @Index >= ' + CAST(@__FirstIndex AS Nvarchar) + 'THEN  '''+ CAST(UserID AS Nvarchar)  + ''',ELSE '''' END,@Index = @Index + 1 FROM dbo.Tbl_User'
    + @__WhereClause + 'ORDER BY ' + @__SortField + @__Order
      

  12.   

    SET @SSQL = '
    SELECT TOP ' + CAST(@__LastIndex AS NVarchar) + '
    @SKeys = '' + @SKeys + CASE WHEN @Index >= ' + CAST(@__FirstIndex AS Nvarchar) + '------------------------------ THEN  char(39)+CAST(UserID AS Nvarchar)+char(39)  + '','' ---------------------------------
    ELSE '''' END,
    @Index = @Index + 1
    FROM dbo.Tbl_User'
    + @__WhereClause + '
    ORDER BY ' + @__SortField + @__Order如果你的语句没问题的话,这样应该可以了