3

Мой System.Data.SqlClient сообщает, что я забыл передать параметр.SQL Server 2008 R2 Отсутствует параметр

Ну, я почесал голову над этим.

Я использую SQL Server 2008 R2 с Asp.Net MVC2 в VS2008.

Вот экран.

enter image description here

Что я пропустил?

EDIT

Вот хранимая процедура Заголовок

ALTER PROCEDURE [dbo].[ClientMst_AUTO](@Params VARCHAR(50),@result xml output) 
as 
BEGIN 
+1

Можете ли вы показать нам фактическую инструкцию SQL, которую используете? Также: когда вы определяете 'SqlParameter' типа' SqlDbType.VarChar' - вы должны ** всегда ** определять длину, иначе вы могли бы получить строку длиной в 1 символ! –

+0

Вы имеете в виду хранимую процедуру или текст команды? – Deb

+0

Если это хранимая процедура, то хранимый заголовок proc (чтобы увидеть, как выглядят параметры) - в противном случае полный оператор SQL. –

ответ

2

Код выглядит хорошо на первый взгляд, - единственная точка, я вижу, что может объяснить поведение заключается в следующем: вы определили свой параметр @result как ParameterDirection.InputOutput - но вы не питая никакого значения для этого параметр на входной стороне ...

Попробуйте добавить эту строку, прежде чем добавить parm2 к cmd.Parameters коллекции:

parm2.Value = string.Empty; 

Does что-либо изменить ?

ИЛИ: просто определить параметр как ParameterDirection.Output (вместо InputOutput) - это что решить эту проблему?

+1

SPOT ON !! Это была проблема. Большое спасибо. Теперь он работает после инициализации значения параметра. – Deb

0

Если вы не собираетесь передать значение в ваш параметр @result, установите parm2.Direction в ParameterDirection.Output.

+0

спасибо, но во всех моих хранимых процедурах он передается как таковой, и они работают нормально. На днях я решил создать новую перегрузку в своем DAL, и здесь я столкнулся с этой странной проблемой. – Deb

+0

Возможно ли это из-за повреждения SqlClient? или временные файлы? – Deb

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