Я создал хранимую процедуру команды insert для данных сотрудника в SQL Server 2005, в которой одним из параметров является изображение, для которого я использовал varbinary
в качестве типа данных в таблице.Ошибка хранимой процедуры SQL Server 2005
Но когда я добавляю этот параметр в хранимой процедуре я получаю следующее error-
Implicit conversion from data type varchar to varbinary is not allowed. Use the CONVERT function to run this query.
Хранимая процедура:
(
@Employee_ID nvarchar(10)='',
@Password nvarchar(10)='',
@Security_Question nvarchar(50)='',
@Answer nvarchar(50)='',
@First_Name nvarchar(20)='',
@Middle_Name nvarchar(20)='',
@Last_Name nvarchar(20)='',
@Employee_Type nvarchar(15)='',
@Department nvarchar(15)='',
@Photo varbinary(50)=''
)
insert into Registration
(
Employee_ID,
Password,
Security_Question,
Answer,
First_Name,
Middle_Name,
Last_Name,
Employee_Type,
Department,
Photo
)
values
(
@Employee_ID,
@Password,
@Security_Question,
@Answer,
@First_Name,
@Middle_Name,
@Last_Name,
@Employee_Type,
@Department,
@Photo
)
Структура таблицы:
Column Name Data Type Allow Nulls
Employee_ID nvarchar(10) Unchecked
Password nvarchar(10) Checked
Security_Question nvarchar(50) Checked
Answer nvarchar(50) Checked
First_Name nvarchar(20) Checked
Middle_Name nvarchar(20) Checked
Last_Name nvarchar(20) Checked
Employee_Type nvarchar(15) Checked
Department nvarchar(15) Checked
Photo varbinary(50) Checked
код в vb.net для вызова хранимых procedure->
Public Function Отправить (ByVal OBJ Как UserData, ByVal неавтоматического As String) As Boolean
Using cnn As New SqlConnection(conn)
Using cmd As New SqlCommand
cmd.Connection = cnn
If opt = "Submit" Then
cmd.CommandText = "sp_emp_Registration"
End If
cmd.CommandType = CommandType.StoredProcedure
cmd.Parameters.Add(New SqlParameter("@Employee_ID", obj.EmpID))
cmd.Parameters.Add(New SqlParameter("@Password", obj.Pwd))
cmd.Parameters.Add(New SqlParameter("@Security_Question", obj.SecQues))
cmd.Parameters.Add(New SqlParameter("@Answer", obj.Ans))
cmd.Parameters.Add(New SqlParameter("@First_Name", obj.Firstname))
cmd.Parameters.Add(New SqlParameter("@Middle_Name", obj.Middlename))
cmd.Parameters.Add(New SqlParameter("@Last_Name", obj.Lastname))
cmd.Parameters.Add(New SqlParameter("@Employee_Type", obj.EmpType))
cmd.Parameters.Add(New SqlParameter("@Department", obj.dept))
cmd.Parameters.Add(New SqlParameter("@Photo", obj.photo))
cnn.Open()
Try
If (cmd.ExecuteNonQuery() > 0) Then
cnn.Close()
Return True
Else
Return False
End If
Catch ex As Exception
Return False
End Try
End Using
End Using
End Function
Я не получая, что делать..может ли кто-нибудь дать мне какое-нибудь предложение или решение? Спасибо заранее.
Можете ли вы предоставить SP? Похоже, вы создали свой параметр как varchar вместо varbinary. –
нет я не использовали VARBINARY only..following является SP – user1670625
( EMPLOYEE_ID NVARCHAR (10) = '', Пароль NVARCHAR (10) = '', Security_Question NVARCHAR (50) = '', Ответ NVARCHAR (50) = '', First_Name NVARCHAR (20) = '', Middle_Name NVARCHAR (20) = '', LAST_NAME NVARCHAR (20) = '', Employee_Type NVARCHAR (15) = '', отдел NVARCHAR (15) = '', Фото varbinary (50) = '' ) – user1670625