Sql server 如何制作过程插入
请帮助,如何更正此过程 现在,我得到一个错误: 不允许从数据类型varchar隐式转换为varbinary(max)。使用CONVERT函数运行此查询 代码: 以下是表格结构Sql server 如何制作过程插入,sql-server,Sql Server,请帮助,如何更正此过程 现在,我得到一个错误: 不允许从数据类型varchar隐式转换为varbinary(max)。使用CONVERT函数运行此查询 代码: 以下是表格结构 [dbo].[APPUSERDTL]( [UID] [int] NOT NULL, [APPCODE] [varchar](50) NULL, [APPEXPIRED] [datetime] NULL, [SIGNIMAGE] [image] NULL,
[dbo].[APPUSERDTL](
[UID] [int] NOT NULL,
[APPCODE] [varchar](50) NULL,
[APPEXPIRED] [datetime] NULL,
[SIGNIMAGE] [image] NULL,
[SIGNFILE] [varbinary](max) NULL,
[HEADUID] [int] NULL,
[PRINCIPALFROM] [money] NOT NULL,
[PRINCIPALTO] [money] NOT NULL,
[EXCEPTIONUSER] [bit] NOT NULL,
[LastUpdate] [datetime] NOT NULL )
似乎您正在将
varchar
值传递给@SIGNFILE
参数
请检查您传递的值
你可以复制这个问题
declare @test varbinary(max)=''
select @test
更新
为什么要将''
传递给insert语句?它将考虑所有的值,如“代码> VARCHAR < /代码>,如果您在引用中使用。删除引号并重试
你可以做如下的事情
INSERT INTO APPUSERDTL
(UID,
APPCODE,
APPEXPIRED,
SIGNIMAGE,
SIGNFILE,
HEADUID,
PRINCIPALFROM,
PRINCIPALTO,
EXCEPTIONUSER,
LastUpdate)
VALUES(@UID,
@APPCODE,
@APPEXPIRED,
@SIGNIMAGE,
@SIGNFILE,
@HEADUID,
@PRINCIPALFROM,
@PRINCIPALTO,
@EXCEPTIONUSER,
@LastUpdate)
当SQL Server尝试执行从空字符串(
'
)到varbinary(max)
的转换时,发生了错误。唯一的方法是避免隐式转换。如果需要将空字符串转换为varbinary类型,请使用cast(@your_variable as varbinary(max))
构造(在上面调用SPSP_FILEUPLOAD的代码中).DB表中列SIGNFILE的数据类型是什么?旁注:存储过程中不应使用sp_uu
前缀。微软已经这样做了,而且你确实有可能在将来的某个时候发生名称冲突。最好只是简单地避免使用sp.
并使用其他东西作为前缀,或者根本不使用前缀!在哪里调用存储过程?你能用这个更新你的问题吗?此外,表格定义将有助于发现问题!此表架构……[dbo].[APPUSERDTL]([UID][int]不为NULL,[APPCODE][varchar](50)NULL,[APPEXPIRED][datetime]NULL,[SIGNIMAGE][image]NULL,[SIGNFILE][varbinary](max)NULL,[HEADUID][int int NULL PRINCIPALFROM][money]不为NULL,[PRINCIPALTO money]不为NULL,[EXCEPTIONUSER][bit]不为NULL,[LastUpdate][datetime]不是Null如何创建过程插入?我是plisnewbie@arifpratama:只需删除值中的'
,并传递参数Simplicit将空字符串转换为varbinary将失败。这将不起作用。请尝试声明@test varbinary(max)=''选择强制转换(@test as varbinary(max))
您不能将空字符串转换为varbinary
!!!当然可以。但如果您将以另一种方式编写它,即声明@x varchar(max)='',@test varbinary(max);选择@test=cast(@x为varbinary(max))这将是很好的,这就是答案…这个问题是OP把所有的参数传递到<代码> >代码>中插入语句,这导致所有的代码都被认为是<代码> VARCHAR < /代码>!!
INSERT INTO APPUSERDTL
(UID,
APPCODE,
APPEXPIRED,
SIGNIMAGE,
SIGNFILE,
HEADUID,
PRINCIPALFROM,
PRINCIPALTO,
EXCEPTIONUSER,
LastUpdate)
VALUES(@UID,
@APPCODE,
@APPEXPIRED,
@SIGNIMAGE,
@SIGNFILE,
@HEADUID,
@PRINCIPALFROM,
@PRINCIPALTO,
@EXCEPTIONUSER,
@LastUpdate)