【发布时间】: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