【问题标题】:Dynamic SQL update Image动态 SQL 更新镜像
【发布时间】:2015-11-18 10:10:45
【问题描述】:

我一直在与这种说法作斗争:

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 

基本上,我有许多具有相似架构但名称不同(用于事务类型)的数据库表,并且希望这个 ONE 过程在给定表名作为参数的情况下进行更新。此脚本编译成功,但执行无法更新图像字段。有没有我错过的转化?

请帮忙。

【问题讨论】:

  • 你怎么知道“不能更新图片字段”?有错误信息吗?如果在执行前打印出@sqlUpdt01的值,你会看到什么?

标签: sql-server dynamic-sql varbinary


【解决方案1】:

在下面的行中以正确的类型转换

在正确的行 + ''' WHERE (transact_recordID_int = '+ 转换(varchar,@transact_recordID_int) +

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

【讨论】:

    猜你喜欢
    • 2017-04-24
    • 1970-01-01
    • 1970-01-01
    • 2015-07-14
    • 1970-01-01
    • 1970-01-01
    • 2016-06-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多