Как проверить, существует ли изображение уже или нет в SQL
Я сохранил изображение в таблице sql с помощью sql server 2005.Теперь мне нужно проверить, существует ли уже изображение или нет.
Мой код находится ниже
Что я уже пробовал:
CREATE PROCEDURE sptblEmployeeProofDetail ( @SID numeric(18),@EmpSid numeric(18),@ProofTypeSID numeric(18),@ProofNo nvarchar(50), @ProofPath nvarchar(100),@ProofImage image,@RevisionNo numeric(18),@CreatedBy numeric(18,3)) AS BEGIN IF ((Select Count(*) from tblEmployeeProofDetail where EmpSid=@EmpSid and ProofTypeSID=@ProofTypeSID and ProofPath=@ProofPath and ProofImage=@ProofImage)>0) BEGIN Select Top 1 @RevisionNo = RevisionNo +1 from tblEmployeeProofDetail order by RevisionNo Desc END INSERT INTO tblEmployeeProofDetail (EmpSid,ProofTypeSID,ProofNo,ProofPath,ProofImage,RevisionNo,CreatedBy,CreatedOn) VALUES (@EmpSid,@ProofTypeSID,@ProofNo,@ProofPath,@ProofImage,@RevisionNo,@CreatedBy,GETDATE()) END
Сообщение об ошибке выглядит следующим образом
Msg 402, Level 16, State 1, Procedure sptblEmployeeProofDetail, Line 9 The data types image and image are incompatible in the equal to operator.
Richard MacCutchan
Сообщение ясно, что существует несовместимость между типом в вашей хранимой процедуре и типом в таблице базы данных.
phil.o
Не совсем :) Это говорит о том, что вы не можете сравнить тип данных изображения с помощью оператора equal to.
[no name]
Да.Теперь как я могу проверить существует ли изображение не в таблице с помощью sql storedprocedure
Maciej Los
Хорошая мысль!
Richard MacCutchan
Так каков же ответ?
phil.o
По-видимому, varbinary datatype будет иметь право на сравнение, но он все равно должен быть проверен на SQL Server 2005.
Richard MacCutchan
Да, я прочитал об этом немного больше после вашего комментария. Но я думаю, что это сообщение об ошибке нуждается в некоторой работе.
[no name]
В моей таблице поле ProofImage имеет тип данных Image и хранимая процедура также объявлена как image..но она показывает ошибку.Формат Моей Таблицы
SID numeric(18, 0)
EmpSid числовой(18, 0)
ProofTypeSID числовой(18, 0)
ProofNo nvarchar(50)
ProofPath nvarchar(100)
Корректурное изображение
Ревизионно числовой(18, 0)
CreatedBy numeric(18, 3)
CreatedOn datetime
0x01AA
а) если у вас есть такая возможность, замените его IMAGE
около VARBINARY(MAX)
. IMAGE
рано или поздно они исчезнут.
б.) VARBINARY(MAX)
кажется, это прекрасно работает в предложении WHERE
Maciej Los
Хорошая мысль!