挖靠!
这个String要够长啊!
动作怎么产生的?关键就是拆分字段了

解决方案 »

  1.   

    这种事情最好不要放在数据库里处理,自己在脚本里面生成好了SQL语句再来执行比较好吧。
    有段时间没写SQL脚本了,正好借这个机会练练手,下面是我写的,运行OK
    create table A(FormNo char(3), SerialNo char(3), ActionName varchar(20))
    create table B(FormNo char(3), SerialNo char(3), ActionName varchar(20))
    go
    insert into A values('001', 'aaa', 'action1')
    insert into A values('001', 'bbb', 'action1')
    insert into A values('003', 'ddd', 'action3')
    insert into A values('004', 'eee', 'action4')
    insert into B values('001', 'ccc', 'action1')
    insert into B values('002', 'ccc', 'action2')
    godeclare @arg varchar(8000)
    set @arg = '001,aaa,A;001,bbb,A;002,ccc,B;003,ddd,A;004,eee,A'declare @i int, @j int
    declare @s varchar(100), @argTmp varchar(8000)
    declare @sql varchar(8000)
    declare @SrotNo int, @FormNo char(3), @SerialNo char(3), @Table varchar(20)SET NOCOUNT ONset @sql = ''
    set @SrotNo = 0
    set @argTmp = @arg
    while 1=1
    begin
      set @SrotNo = @SrotNo + 1
      set @i = CHARINDEX(';', @argTmp)
      if @i > 0
      begin
        set @s = LEFT(@argTmp, @i - 1) -- 得到一条记录:001,aaa,A
        set @argTmp = SUBSTRING(@argTmp, @i + 1, 8000)
      end
      else
        set @s = @argTmp  -- 生成SQL语句
      if @sql <> '' set @sql = @sql + ' union '
      set @sql = @sql + 'select ' + CAST(@SrotNo as varchar) + ' as SortNo, FormNo, SerialNo, ActionName from '
      -- 1. FormNo
      set @j = CHARINDEX(',', @s)
      set @FormNo = LTRIM(RTRIM(LEFT(@s, @j - 1)))
      set @s = SUBSTRING(@s, @j + 1, 100)
      -- 2. SerialNo
      set @j = CHARINDEX(',', @s)
      set @SerialNo = LTRIM(RTRIM(LEFT(@s, @j - 1)))
      -- 3. Table Name
      set @Table = LTRIM(RTRIM(SUBSTRING(@s, @j + 1, 100)))
      --- 4. sql
      set @sql = @sql +  @Table + ' where FormNo = ''' + @FormNo + ''' and SerialNo = ''' + @SerialNo + ''''  if @i <= 0 break
    end
    print @sql
    exec(@sql)SET NOCOUNT OFFdrop table A
    drop table B
      

  2.   

    action1 aciton2就是表中aciton 对应的字段阿,不知道怎么说清楚了,就是传入一个字符串数组(因为sql中好像不可以传入数组,所以我用字符串代替了,为了描述清楚,我用数组表示吧)设string[]=
    ({001,aaa,A};{001,bbb,A};{002,ccc,B};{003,ddd,A};{004,eee,A};{001,aaa,A })每个{}中表示表{号码,产品序列号码,表名}然后就是要实现我说的功能了,各位达仁还不明白我的意思吗,急死人了
      

  3.   

    测试了 RedCoin(差哪呢) 写的,还是不怎么对,编号出了点问题, 那位再帮忙耐心看看哪里出了问题