把字符串数组  使用TAB符作为字段的间隔符,回车换行符(\r\n)作为记录间隔符,最后一行也须有回车换行符。怎么写 在线等……

解决方案 »

  1.   

    --5.2 输入表数据类型
    --SQL语句对于数组类型是不支持的,而存储过程调用接口里,很多输入参考需要把数组数据传到数据库的存储过程处理中,
    --在此我们就需要用到一个技术(或者说技术),在此称之为输入表技术。
    --输入表技术采用的是临时表的技术,首先需要定义一个很长字串类型的参数,执行时将数组数据转换成字串数据传入到存储过程;
    --然后在存储过程中再调用通用输入表转换存储过程,将字串转换到指定的临时表中;最后在使用的过程中直接引用此临时表即可。
    --现使用的通用存输入表转换存储过程SQL语句如下:
    --(SQL Server版本,如果Sybase版本,将Replace替换成Str_Replace即可)
    --任何可打印的字符(控制字符是不可打印的,除空值、制表符、换行符和回车之外)   (*、A、t、l   等)   
    --最长可达   10   个可打印字符的字符串,包括上面列出的部分或全部终止符   (**\t**、end、!!!!!!!!!!、\t--\n   等)   
    --使用此存储过程有如下限制:
    --1、 参数的字段个数与临时表的字段个数与顺序必须完全匹配。
    --2、 临时表所有类型必须是数值型(对于SQL Server日期型,日期时间型也能接受)。
    --3、 参数使用TAB符作为字段的间隔符,回车换行符(\r\n)作为记录间隔符,最后一行也须有回车换行符。
    --4、 将记录集转换成字串时要注意,如果转换数据中有TAB符、回车换行符(\r\n)、单引号,需将这些内容实际踢除,
    --      转换后的字串最长长度注意不要超过特定存储过程定义的长度。
    --5、 因为接口处理是多线程并发运行的,所以存储过程中使用临时表必须符合以下规则:不同数据库连接之间的临时表是
    --      可同名存在而且互不影响的,上一次存储过程运行创建的临时表不影响下一次存储过程正确运行,上下次可能是同一个或
    --      不同一个存储过程,之间影响关系要考虑到存储过程运行异常的情况。
    --6、 按上点的要求,在SQL Server中,应使用局部临时表,在存储过程运行前删除一遍临时表,再创建此临时表,然后再调用输
    --      入表用存输入表转换存储过程。
      

  2.   

    create table #test (id varchar(10), name varchar(50));
    DECLARE @CONTENT VARCHAR(400)
    SET @CONTENT='ID'+CHAR(9)+'NAME'+CHAR(13)+CHAR(10)
                 +'10'+CHAR(9)+'paul'+CHAR(13)+CHAR(10)
                 +'11'+CHAR(9)+'DAI'+CHAR(13)+CHAR(10)
    exec proc_createInpuTable '#test',@CONTENT
    SELECT * FROM #TEST
    这个是刚刚写出来的示例  存储过程 就不贴出来了