[英]How to fix operand type clash : image is incomplate with varchar(max) in sql server
我创建了以下给出的用户定义类型(使用脚本来创建):
CREATE TABLE [dbo].[EmployeeMasters](
[ID] [int] IDENTITY(1,1) NOT NULL,
[EmployeeID] [varchar](max) NOT NULL,
[EmployeeFName] [varchar](max) NOT NULL,
[EmployeeLName] [varchar](max) NOT NULL,
[Photo] [image] NOT NULL)
在同一数据库上,我创建了一个使用此类型的过程:
create PROCEDURE EmpQuli_INSERT @EmployeeID varchar(Max),@EmployeeFName VARCHAR(MAX), @EmployeeLName VARCHAR(MAX),@Photo IMAGE AS BEGIN DECLARE @NEWID VARCHAR(10);
DECLARE @PREFIX VARCHAR(MAX);
SET @PREFIX = UPPER(SUBSTRING('STR',1, 3)) SELECT @NEWID = (@PREFIX + replicate('0', 3 -len(CONVERT(VARCHAR,N.OID + 1))) + CONVERT(VARCHAR,N.OID + 1)) FROM (SELECT CASE WHEN MAX(T.TID) IS null then 0 else MAX(T.TID) end as OID FROM (SELECT SUBSTRING(EmployeeID, 3, 1) as PRE_FIX,SUBSTRING(EmployeeID, 3, LEN(EmployeeID))as TID FROM EmployeeMasters) AS T WHERE T.PRE_FIX = @PREFIX) AS N
insert into EmployeeMasters values(@NEWID,@EmployeeFName, @EmployeeLName, @Photo);
end
我尝试在c#中插入一个值,使操作数类型为clash:图像在sql server中与varchar(max)不兼容 。c#代码为:
EmployeeFName.Value = textBox_emp_Fname.Text;
EmployeeLName.Value = textBox_emp_Lname.Text;
Photo.Value =img_arr1;
AddEmployee.CommandText = "EmpQuli_INSERT @EmployeeFName, @EmployeeLName, @Photo";
我不知道谁来解决它。 请帮助我,因为我必须在6月的第一个星期提交我的最后一年的项目,但是现在我很难解决这个例外,请帮助...。
您在插入语句中缺少一列:
insert into EmployeeMasters values(@NEWID,@EmployeeFName, @EmployeeLName, @Photo);
缺少EmployeeID,因此@Photo
尝试保存到不兼容的@EmployeeLName
。 即使不是,您仍然会缺少EmployeeID
,这NOT NULL
。
我建议使用显式插入语法,而不要依赖自动提供的列:
insert into EmployeeMasters(EmployeeID, EmployeeFName, EmployeeLName, Photo)
values (@NewID, @EmployeeFName, @EmployeeLName, @Photo);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.