从目录加载图像的动态SQL
新来的,非常卡住!我正在尝试使用以下代码将图像从目录加载到数据库中 当我执行SP时,我得到以下形式的打印语句:从目录加载图像的动态SQL,sql,dynamic,insert,Sql,Dynamic,Insert,新来的,非常卡住!我正在尝试使用以下代码将图像从目录加载到数据库中 当我执行SP时,我得到以下形式的打印语句: USE [store] GO DROP PROCEDURE [dbo].[insert2img] /****** Object: StoredProcedure [dbo].[insert2img] Script Date: 07/08/2009 15:36:15 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO
USE [store]
GO
DROP PROCEDURE [dbo].[insert2img]
/****** Object: StoredProcedure [dbo].[insert2img] Script Date: 07/08/2009 15:36:15 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
Create PROC [dbo].[insert2img]
as
Begin
Declare @img1 as varbinary(max)
Declare @dircmd as varchar(max)
DECLARE @filename varchar(100)
DECLARE @filepath varchar(100)
DECLARE @maxRowID int
DECLARE @count int
DECLARE @tempXMLFileName table (RowId int identity(1,1), name varchar(100))
Declare @sql as varchar(max)
Set @count = 1
Set @dircmd = 'MASTER..XP_CMDSHELL "dir/b '+ 'C:\Images\*.*"'
INSERT
@tempXMLFileName exec (@dircmd)
SET @maxRowID = (SELECT max(RowId) FROM @tempXMLFileName)
WHILE @count <= @maxRowID
BEGIN
SET @filename = (SELECT name FROM @tempXMLFileName WHERE [RowId] = @count)
Print @filepath
Set @filepath = 'C:\Images\'+@filename
Set @sql = 'Insert into dbo.aaaimg (sno,imgdate,imgname,img)
Select '' @count'',getdate(),''Image'',
BulkColumn from Openrowset(Bulk ''' + @filepath + ''',Single_Blob) as tt '
print @sql
Print @count
Exec (@sql)
Set @filepath=' '
print @filepath
Set @count = @count + 1
end
end
我的问题是,我试图将@count的值插入到数据库中,但结果却是数据库中的实际单词@count,而不是值。我认为这与分隔符有关,但我无法得到正确的组合
谢谢
James.您需要将@count变量连接到@sql变量中,如下所示:
Set @sql = 'Insert into dbo.aaaimg (sno,imgdate,imgname,img)
Select ' + CAST(@count AS VARCHAR) + ',getdate(),''Image'',
BulkColumn from Openrowset(Bulk ''' + @filepath + ''',Single_Blob) as tt '
话虽如此,我还是要指出,不建议将图像存储在SQL Server本身中。最好在数据库中存储映像的路径,而不是映像本身。您需要将@count变量连接到@sql变量中,如下所示:
Set @sql = 'Insert into dbo.aaaimg (sno,imgdate,imgname,img)
Select ' + CAST(@count AS VARCHAR) + ',getdate(),''Image'',
BulkColumn from Openrowset(Bulk ''' + @filepath + ''',Single_Blob) as tt '
话虽如此,我还是要指出,不建议将图像存储在SQL Server本身中。最好在数据库中存储图像的路径,而不是图像本身