mahitem Ответов: 2

Процедура или функция ожидает параметр, который не был указан.


Здравствуйте, кто-нибудь сталкивался с этой ошибкой раньше? После того, как я добавлю еще один столбец в таблицу, затем обновлю процедуру хранения, а затем перекомпилирую сайт, тем временем я получил это сообщение об ошибке. Ниже приведены трассировки стека. Может ли кто-нибудь помочь?

Процедура или функция 'spInsertOrganization' ожидает параметр '@nconnectionType', который не был указан.

Сведения об исключении: System.Data.SqlClient.SqlException: процедура или функция 'spInsertOrganization' ожидает параметр '@nconnectionType', который не был указан.


Ошибка Источника:
Строка 92: команда.Параметры.Add(new SqlParameter("networkAvailability", organization.NetworkAvailability));
Строка 93: командование.Параметры.Add(new SqlParameter("nconnectionType", organization.NConnectionType));
Строка 94: командование.Метод executenonquery();
Строка 95: }
Строка 96: }
трассировка стека:

[SqlException (0x80131904): Procedure or function 'spInsertOrganization' expects parameter '@nconnectionType', which was not supplied.]
   System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction) +1753986
   System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction) +5296058
   System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose) +558
   System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady) +1682
   System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString) +269
   System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite) +1379
   System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource`1 completion, Int32 timeout, Task& task, Boolean asyncWrite) +175
   System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(TaskCompletionSource`1 completion, String methodName, Boolean sendToPipe, Int32 timeout, Boolean asyncWrite) +205
   System.Data.SqlClient.SqlCommand.ExecuteNonQuery() +160
   MMSDataAccessLayer.OrganizationDAL.InsertOrganization(Organization organization) in D:\backup files sqlserver\material management new latest\Materials Management System Backup\MMSDataAccessLayer\OrganizationDAL.cs:94
   RegionalDataOperator_Organization.btnAddOrganization_Click(Object sender, EventArgs e) in d:\backup files sqlserver\material management new latest\Materials Management System Backup\MMSUI\RegionalDataOperator\Organization.aspx.cs:197
   System.Web.UI.WebControls.Button.OnClick(EventArgs e) +9552602
   System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +103
   System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +10
   System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +13
   System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +35
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1724


Моя соторная процедура:

public void InsertOrganization(Organization organization)
{
    using (SqlConnection _connection = new SqlConnection(this._connectionString))
    {
        _connection.Open();
        using (SqlCommand command = _connection.CreateCommand())
        {
            command.CommandType = CommandType.StoredProcedure;
            command.CommandText = "spInsertOrganization";
            command.Parameters.Add(new SqlParameter("organizationName", organization.OrganizationName));
            command.Parameters.Add(new SqlParameter("authority", organization.Authority));
            command.Parameters.Add(new SqlParameter("typeOfOrganization", organization.TypeOfOrganization ));
            command.Parameters.Add(new SqlParameter("phoneNumber", organization.PhoneNumber));
            command.Parameters.Add(new SqlParameter("phoneNumber2", organization.PhoneNumberTwo));
            command.Parameters.Add(new SqlParameter("fax", organization .Fax));
            command.Parameters.Add(new SqlParameter("organizationSector", organization.OrganizationSector));
            command.Parameters.Add(new SqlParameter("woredaID", organization.WoredaID));
            command.Parameters.Add(new SqlParameter("zoneID", organization.ZoneID));
            command.Parameters.Add(new SqlParameter("websiteURL", organization.WebsiteURL));
            command.Parameters.Add(new SqlParameter("internetAvailability", organization.NetworkAvailability));
            command.Parameters.Add(new SqlParameter("connectionType", organization.ConnectionType));
command.Parameters.Add(new SqlParameter("networkAvailability",organization.NetworkAvailability));
command.Parameters.Add(new SqlParameter("nconnectionType", organization.NConnectionType));
command.ExecuteNonQuery();
        }
    }
}

kishore sharma

Вы закрываете visual studio и снова открываете ее, а затем запускаете.
попробуйте один раз

mahitem

Я пытаюсь это сделать но у меня нет решения

2 Ответов

Рейтинг:
13

OriginalGriff

Совпадать с именем параметра в хранимую процедуру:

command.Parameters.Add(new SqlParameter("@nconnectionType", organization.NConnectionType));
И убедитесь, что значение, которое вы предоставляете, не равно нулю.


mahitem

Пожалуйста, можете ли вы кратко описать его, я попробую это сделать, прежде чем имя параметра в моей хранимой процедуре будет одинаковым

OriginalGriff

- Вы уверены? Сообщение об ошибке довольно специфично:
Сведения об исключении: System.Data.SqlClient.SqlException: процедура или функция 'spInsertOrganization' ожидает параметр '@nconnectionType', который не был указан.
Проверьте символ ' @ ' - обычно я ожидаю, что параметры будут иметь их, а затем дважды проверьте, что значение, которое вы передаете в коде C#, не равно нулю.

mahitem

Это тот самый класс:

использование системы;
использование системы.Коллекции.Общий;
использование System.Linq;
использование System.Text;

пространство имен MMSEntities
{
[Упорядочиваемый]
общественная организация класс
{
частный int _organizationID;
частная строка _organizationName;
частная строка _authority;
частная строка _typeOfOrganization;
частная строка _phoneNumber;
частная строка _phoneNumber2;
частная строка _fax;
частная строка _internetAvailability;
частная строка _connectionType;
частная строка _networkAvailability;
частная строка _nconnectionType;
частная строка _websiteURL;
частная строка _websiteDeveloper;
частная строка _organizationSector;
private int _woredaID;
private int _zoneID;

общественный тип int идентификатор организации
{
получить
{
вернуться _organizationID;
}
набор
{
_organizationID = значение;
}
}
общественного строка Название_организации
{
получить
{
вернуться _organizationName;
}
набор
{
_organizationName = значение;
}
}
публичный струнный орган
{
получить
{
вернуться _authority;
}
набор
{
_authority = значение;
}
}
общественного строка TypeOfOrganization
{
получить
{
вернуться _typeOfOrganization;
}
набор
{
_typeOfOrganization = значение;
}
}
общественные строку номер телефона
{
получить
{
вернуться _phoneNumber;
}
набор
{
_phoneNumber = значение;
}
}
публичная строка PhoneNumberTwo
{
получить
{
вернуться _phoneNumber2;
}
набор
{
_phoneNumber2 = значение;
}
}
публичный строковый факс
{
получить
{
возвращение _fax;
}
набор
{
_fax = значение;
}
}
общедоступная строка InternetAvailability
{
получить
{
вернуться _internetAvailability;
}
набор
{
_internetAvailability = значение;
}
}
общественного строка тип подключения
{
получить
{
вернуться _connectionType;
}
набор
{
_connectionType = значение;
}
}
общедоступная строка NetworkAvailability
{
получить
{
вернуться _networkAvailability;
}
набор
{
_networkAvailability = значение;
}
}
публичная строка NConnectionType
{
получить
{
вернуться _nconnectionType;
}
набор
{
_nconnectionType = значение;
}
}
публичная строка WebsiteURL
{
получить
{
вернуться _websiteURL;
}
набор
{
_websiteURL = значение;
}
}
общественного строка WebsiteDeveloper
{
получить
{
вернуться _websiteDeveloper;
}
набор
{
_websiteDeveloper = значение;
}
}
публичные струнные организации
{
получить
{
вернуться _organizationSector;
}
набор
{
_organizationSector = значение;
}
}
public int WoredaID
{

mahitem

Пожалуйста, помогите мне

OriginalGriff

Это не символ"@", SP будут работать счастливо и без них.
Что оставляет нам еще одну вещь, которую я сказал: Итак, в третий раз "убедитесь, что значение, которое вы предоставляете, не равно нулю" - это означает значение, которое вы задаете параметру в коде C#. Эта линия:
команда.Параметры.Add(new SqlParameter("nconnectionType", organization.NConnectionType));
то есть вы проверили эту организацию.NConnectionType не является нулевым?

mahitem

спасибо

OriginalGriff

Всегда пожалуйста!

Рейтинг:
0

Member 12537015

Пожалуйста помогите я стараюсь больше месяца

Процедура или функция 'sp_CheckMobiles_number" ожидает параметр " @андроид, который не был поставлен.

// This is my code
		
		  public static DataTable getOutput(string str)
        {
             
            SqlConnection con = Connection.getConnection();
			 SqlDataAdapter adapter = new SqlDataAdapter(str,con);
                     SqlCommand sqlCmd = new SqlCommand(str,con);
                     sqlCmd.CommandText = "sp_CheckMobiles_number";
                    sqlCmd.CommandType = CommandType.StoredProcedure;
                   sqlCmd.Parameters.AddWithValue("@mobile",SqlDbType.BigInt).Value=112233;
				     DataSet version = new DataSet();
                     adapter.Fill(version);
                            
                    DataTable dt = version.Tables[0];
                   return dt;
		}
		
		
		//This is my stored procedure
		
		
		create PROCEDURE [dbo].[sp_CheckMobiles_number]
      @mobile BIGINT
AS
BEGIN
      SET NOCOUNT ON;
 
      DECLARE @Exists BIGINT
 
      IF EXISTS( select dbo.[user].PKID, dbo.[user].USER_ID, dbo.[user].NAME, dbo.[user].MOBILE, dbo.[user].COUNTRY_CODE, dbo.[user].IS_ENABLED, dbo.[user].TYPE, 
                      dbo.[user].STATUS, dbo.[order].OID, dbo.[order].ORDERID, dbo.[order].PKID AS PKID, dbo.[order].DRIVER_PKID, dbo.[order].SCH_DATE, dbo.[order].FROM_ADDR, 
                      dbo.[order].TO_ADDR, dbo.[order].PAY_TYPE, dbo.[order].STATUS AS Status
      FROM         dbo.[user] left  JOIN
                      dbo.[order] ON dbo.[user].pkid = dbo.[order].PKID 
                      where dbo.[order].STATUS='fin''can' and dbo.[user].MOBILE=112233)
      BEGIN
            SET @Exists = @mobile
      END
      ELSE
      BEGIN
            SET @Exists = 0
          
      END
 
      RETURN @mobile
END

DECLARE @ReturnValue bigint
EXEC @ReturnValue = sp_CheckMobiles_number 112233
SELECT @ReturnValue