日期:2014-05-18  浏览次数:20533 次

我要存大文件到Varbinary(max)中,定义这个存储过程不行呢?
SQL code

CREATE TABLE [dbo].[TT]
(
    [autoid] [int] IDENTITY(1,1) NOT NULL,
    [photo] [varbinary](max) NULL
);
CREATE PROC InsertBigFiles
@path nvarchar(50)
AS
INSERT TT(photo) SELECT photo FROM  OPENROWSET(BULK @path,SINGLE_BLOB) AS TT(photo);

--上面说@path那里有错
--换成下面的就没有问题,为什么呢
  INSERT TT(photo)
    SELECT photo FROM  OPENROWSET(BULK 'c:\r.mpeg',SINGLE_BLOB) AS TT(photo);




------解决方案--------------------
试试
SQL code
CREATE TABLE [dbo].[TT]
(
    [autoid] [int] IDENTITY(1,1) NOT NULL,
    [photo] [varbinary](max) NULL
);
go

CREATE PROC InsertBigFiles
@path nvarchar(50)
AS
 exec ('INSERT TT(photo) SELECT photo FROM  OPENROWSET(BULK '+@path+',SINGLE_BLOB) AS TT(photo)');

go

------解决方案--------------------
SQL code
CREATE TABLE [dbo].[TT]
(
    [autoid] [int] IDENTITY(1,1) NOT NULL,
    [photo] [varbinary](max) NULL
);
go

CREATE PROC InsertBigFiles
@path nvarchar(50)
AS
 exec ('INSERT TT(photo) SELECT photo FROM  OPENROWSET(BULK '''+@path+''',SINGLE_BLOB) AS TT(photo)');

go