Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从目录加载图像的动态SQL_Sql_Dynamic_Insert - Fatal编程技术网

从目录加载图像的动态SQL

从目录加载图像的动态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

新来的,非常卡住!我正在尝试使用以下代码将图像从目录加载到数据库中

当我执行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


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本身中。最好在数据库中存储图像的路径,而不是图像本身