首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

t-sql存储过程,MSSOL2008R2 储存多个xml文件

2013-09-06 
t-sql存储过程,MSSOL2008R2 存储多个xml文件现在MSSQL2008R2中新建一个表名为xtable,有两列,第一列是name,

t-sql存储过程,MSSOL2008R2 存储多个xml文件
现在MSSQL2008R2中新建一个表名为xtable,有两列,第一列是name,代表文件名;第二列是value,代表存储的文件内容,数据格式分别为varchar和xml。
      所有的xml文件存储在一个文件夹里,路径假设为‘F:\data\’,每个文件的文件名为它的编号,例如第一个文件为00000,第二个为00001。
      这里要注意的是,这些文件都为某工具生成的,所以没有后缀名!!!所以说文件名不是00000.xml而是00000!!!
     我写了一个存储过程如下:
   
CREATE PROCEDURE Demo1
@x int = 0
AS
BEGIN 
while @x < 2
begin
         declare @pathnvarchar(200)
        set @path = N'insert into xtable(value)
select * from openrowset
(bulk''F:\data\'
+ right(cast(@x as nvarchar),5) + N'’,SINGLE_CLOB) as x';
      EXECsp_executesql @path 
      set @x = @x + 1 
   end
END
明显是  set @path句有错,请问应该怎么写???
t-sqlopenrowset?bulk t-sql bulk 存储过程
[解决办法]

引用:
请问我现在需要插入文件名到表中,应该怎么插呢,引号那块总是不对。。打印出来的@path括号还少一个

ALTER PROCEDURE Demo1
@x int = 0
AS
BEGIN 
    while @x < 2
    begin
        declare @path nvarchar(4000)--长度不够
                declare @strname nvarchar(200)
                set @strname = right(cast(@x as nvarchar),5) 
        set @path = N'
        insert into xtable(name,value)
                select '''+ @strname +''',BulkColumn from/*--拼的话,记得加''号,且转义*/
                (


        select BulkColumn from openrowset
        (bulk ''d:\data\'
        + right(cast(@x as nvarchar),5) + N''',SINGLE_CLOB) as xmldata) t' 
 
        PRINT @path
        EXEC sp_executesql @path 
        set @x = @x + 1 
    end
END
go
 
EXEC Demo1 1
/*
(1 行受影响)
*/

热点排行