2013-12-19 3 views
0

Я получаю сообщение об ошибке: Неявное преобразование из типа данных nvarchar в varbinary не допускается. Используйте функцию CONVERT для запуска этого запроса. мой C# фрагмент кода:oledb хранимая процедура C# Процедура или функция ожидает параметр, который не был отправлен

OleDbCommand spCmd = new OleDbCommand 
        ("[SomeServer].[dbo].GetAllProperties", conn) 
        { 
         CommandType = CommandType.StoredProcedure 
        }; 
       spCmd.Parameters.AddWithValue("@P1", path); 
       spCmd.Parameters.AddWithValue("@P5", 4); 
       int rowsAffected = spCmd.ExecuteNonQuery(); 

путь является строкой. соответствующий SQL зр является:

ALTER PROCEDURE [dbo].[GetAllProperties] 
@P1 nvarchar (425), 
@P2 varchar(32) = NULL, 
@P3 as varbinary(85) = NULL, 
@P4 as nvarchar(260) = NULL, 
@P5 int 
AS 
BEGIN 

.... Пожалуйста, дайте мне знать, как вызвать эту зр из C#. Я попытался указать все параметры в следующем порядке, но затем я получу ошибку: неявное преобразование из типа данных nvarchar в varbinary не допускается. Используйте функцию CONVERT для выполнения данного запроса

   spCmd.Parameters.AddWithValue("@P1", path); 
       spCmd.Parameters.AddWithValue("@P2", DBNull.Value); 
       spCmd.Parameters.AddWithValue("@P3", DBNull.Value); 
       spCmd.Parameters.AddWithValue("@P4", DBNull.Value); 
       spCmd.Parameters.AddWithValue("@P5", 4); 
       int rowsAffected = spCmd.ExecuteNonQuery(); 

ответ

0

для передачи нулевых значений необязательным параметрам просто используйте null вместо DBType.Null. Он работает:

 spCmd.Parameters.AddWithValue("@P1", path); 
     spCmd.Parameters.AddWithValue("@P2", null); 
     spCmd.Parameters.AddWithValue("@P3", null); 
     spCmd.Parameters.AddWithValue("@P4", null); 
     spCmd.Parameters.AddWithValue("@P5", 24); 
1

параметров по умолчанию используются только когда их нет, другие слова, не добавляйте их в список параметров.

+0

если я удалить параметры по умолчанию, я получаю сообщение об ошибке: «Процедура или функция„“GetAllProperties ожидает параметр„@AuthType“, который не поставлялся.» хотя я могу видеть его в параметрах объекта команды – Kamayani

+0

Параметры OLEDB чувствительны к порядку ... попробуйте организовать порядок, чтобы соответствовать порядку SPROC. –

+0

Я уже пробовал, что, все та же ошибка – Kamayani

Смежные вопросы