IF object_id('tb') IS NOT NULL DROP TABLE tb
CREATE TABLE TB(id INT,NAME CHAR(1))
INSERT INTO tb 
SELECT 1,'a' UNION 
SELECT 2,'b' UNION
SELECT 3,'c' UNION
SELECT 4,'d' UNION 
SELECT 5,'e' UNION 
SELECT 6,'f'DECLARE @sid VARCHAR(20)
SET @sid='1,2,5,4,1,2'想要定义一个字符串变量@STR,然后将@SID中 对应的ID 的name 的值赋给@STR
最后结果为@str='abedab'不用循环,用EXEC SP_EXECUTESQL 的方法怎么做?

解决方案 »

  1.   

    huo, 这也写错。。不明白你啥意思, 明明你循环做下不挺简单的么,还是你指怎么用EXEC 给变量赋值呢?A:搜索下SP_EXECUTESQL用法就好
      

  2.   

    IF object_id('tb') IS NOT NULL DROP TABLE tb
    CREATE TABLE TB(id INT,NAME CHAR(1))
    INSERT INTO tb  
    SELECT 1,'a' UNION  
    SELECT 2,'b' UNION
    SELECT 3,'c' UNION
    SELECT 4,'d' UNION  
    SELECT 5,'e' UNION  
    SELECT 6,'f'DECLARE @sid VARCHAR(20)
    SET @sid='1,2,5,4,1,2'create table #t(id int,px int identity(1,1))declare @s varchar(1000)
    set @s='select '+replace(@sid,',' ,' as id union all select ')
    insert #t exec(@s)set @sid=nullselect @sid=isnull(@sid+',','')+name 
    from tb a,#t b 
    where a.id=b.id
    order by pxselect @sid
    -------------------
    a,b,e,d,a,b(1 行受影响)
     
    drop table #t