Member 14207397 Ответов: 2

Ошибка:процедура и функция expect parameter'@regdate', не были предоставлены.


Procedure or Function expects parameter '@Regdate'(datatpe-datetime),which was not supply


Что я уже пробовал:

ALTER PROCEDURE [dbo].[sp_InsertLabreg] 
(
@patfor varchar(100)= null ,
        @LABID varchar(100)=null,
        @pattypr varchar(100)= null ,
        @Regdate datetime,

)
AS
BEGIN
INSERT INTO labreg
	(   patfor,
		LABID,
        pattypr,
        Regdate)
)
INSERT INTO labreg
	(   patfor,
		LABID,
        pattypr,
        Regdate) End

Richard MacCutchan

Как говорится в сообщении ...

2 Ответов

Рейтинг:
7

MadMyche

Две наиболее распространенные проблемы при вызове SP из C#::

Первый-это не передача требуемых параметров, как утверждает OriginalGriff в другом ответе.

Во-вторых, это неспособность установить SqlCommand.CommandType в этом случае он будет по умолчанию использовать текст.

using (SqlConnection conn = new SqlConnection(connectionString)) {
  using (SqlCommand cmd = new SqlCommand({ProcedureName}, conn)) {
    cmd.CommandType = CommandType.StoredProcedure;
    cmd.Parameters.AddWithValue("@ParameterName", ParameterValue);
    // and so on
   }
}
Свойство sqlcommand.Свойство CommandType (System.Data.SqlClient) | Microsoft Docs[^]


Рейтинг:
18

OriginalGriff

Посмотрите на код, в котором вы вызываете процедуру: ваши первые три параметра помечены как defaulting to NULL, что означает, что если вы не предоставляете значение, оно по умолчанию ОК.
Но @Regdate не имеет значения по умолчанию, а это значит, что если вы его не поставите, то получите ошибку.
Вы могли бы добавить "= NULL" к определению, но ... это позволяет отправлять в БД полностью пустые строки ... что, вероятно, не очень хорошая идея.