动态SQL更新映像

时间:2015-11-18 10:10:46

标签: sql-server dynamic-sql varbinary

我一直在与这句话作斗争:

ALTER PROCEDURE [dbo].[transact_image_update]
-- Add the parameters for the stored procedure here
@transact_recordID_int int, 
@image1_bin image, 
@image2_bin image, 
@transact_referenceNo_str nvarchar(25),
@userID_last uniqueidentifier,
@tableName nvarchar(50)

AS
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;

    -- Insert statements for procedure here

DECLARE @sqlUpdt01 nvarchar(4000)
SET @sqlUpdt01  = '
        Update [dbo].[' + @tableName + '] SET [image1_bin] = '+ CONVERT(VARCHAR(MAX), CONVERT(VARBINARY(MAX), @image1_bin), 2)      
        + ', [image2_bin] = '+ CONVERT(VARCHAR(MAX), CONVERT(VARBINARY(MAX), @image2_bin), 2)
        +', [userID_last] = '''+ convert(nvarchar(4000),@userID_last)
        + ''' WHERE (transact_recordID_int = '+convert(varchar,@transact_recordID_int) +')
            AND ([transact_referenceNo_str] = ''' +convert(varchar, @transact_referenceNo_str)
             +''' )
             AND (locked_bol = 0) 
             '  
exec sp_executesql @sqlUpdt01 

基本上,我有许多具有相似模式但名称不同的DB表(对于事务类型),并且希望这个ONE过程在表名作为参数的情况下进行更新。此脚本成功编译,但执行无法更新图像字段。我缺少转换吗?

请帮忙。

1 个答案:

答案 0 :(得分:-1)

在下面的行中输入正确的类型

正确的行 +''' WHERE(transact_recordID_int =' + convert(varchar,@ transact_recordID_int)+

正确的行 +''' WHERE(transact_recordID_int =' + @transact_recordID_int +