2015-04-24 3 views
0

Я обновляю хранимую процедуру, которая принимает _POST информацию и сохраняет ее в базе данных MySQL. Изменена структура таблицы; Некоторые атрибуты изменились с TINYINT (0,1) на ENUM (Да/Нет).Обновление старой хранимой процедуры после изменения структуры базы данных

Однако, когда я изменяю процедуру, чтобы отразить это, я получаю ошибку синтаксического анализа. Значение моего нового заявления написано неправильно. Я не уверен, как я сделал это неправильно.

код здесь: сообщение

DROP PROCEDURE IF EXISTS DSSv3_SummaryInfo_insertPostInfo; 
DELIMITER // 
CREATE PROCEDURE DSSv3_SummaryInfo_insertPostInfo(
    IN InProjectID INT, 
    IN InTimeframe VARCHAR(25), 
    IN InDateSpent VARCHAR(3000), 
    IN InDateSpentDesc VARCHAR(3000), 
    IN InQaName INT, 
    IN InWhyStoreDesc TEXT, 
    IN InChannelTypeDesc TEXT, 
    IN InOtherEntitiesDesc TEXT, 
    IN InNetworkDiagramDesc TEXT, 
    IN InScopingMethods TEXT, 
    IN InScopingConfirmationMethods TEXT, 
    IN InScopingMethodEvaluation TEXT, 
    IN InScopingMethodDocumentation TEXT, 
    IN InScopingMethodAccuracy TEXT, 
    IN InScopingAssessorName INT, 
    IN InEnvironmentPeople TEXT, 
    IN InEnvironmentProcesses TEXT, 
    IN InEnvironmentTechnologies TEXT, 
    IN InEnvironmentLocations TEXT, 
    IN InEnvironmentOther TEXT, 
    IN InSegmentationUsed ENUM, 
    IN InNoSegmentationAssessor INT, 
    IN InSegmentationHow TEXT, 
    IN InSegmentationTechnologies TEXT, 
    IN InSegmentationValidate TEXT, 
    IN InSegmentationFunction TEXT, 
    IN InSegmentationIntegrity TEXT, 
    IN InWithSegmentationAssessor INT, 
    IN InCountriesEntityConductsBusiness TEXT, 
    IN InWirelessVerify TEXT, 
    IN InWirelessImpact TEXT, 
    IN InSamplingNotUsedAssessor INT, 
    IN InSamplingUsedAssessor INT, 
    IN InSamplingRational TEXT, 
    IN InSamplingStandardiseControl TEXT, 
    IN InSamplingControlValidation TEXT, 
    IN InThirdPartyAssessorPadss INT, 
    IN InThirdPartyAssessorP2pe INT, 
    IN InThirdPartyScopeReduction TEXT, 
    IN InThirdPartyComments TEXT, 
    IN InSpIsSp TINYINT, 
    IN InSpIncludedRequirements VARCHAR(3000), 
    IN InSpExcludedRequirements VARCHAR(3000), 
    IN InSpAssessor INT, 
    IN InSpIpAddr VARCHAR(1500), 
    IN InSpCustomerIpAddr VARCHAR(1500), 
    IN InQsInitial TINYINT, 
    IN InQsAmount TINYINT, 
    IN InQsPassAssessor INT, 
    IN InQsDocumentAssessor TEXT, 
    IN InQsCorrection TEXT, 
    IN InQsAssessorComments TEXT, 
    IN InQsAocAssessor TEXT 
    ) 
BEGIN 
    /* 
    set all _POST data for executive summary 
    InParam: 
      All _POST data variables on executive summary form 
      Excludes _FILES data 

    */ 
    IF NOT EXISTS (SELECT 1 FROM SummaryInfo WHERE ProjectID = InProjectID) THEN 
     INSERT INTO SummaryInfo(
      ProjectID, 
      timeframe, 
      date_spent, 
      date_spent_desc, 
      qa_name, 
      why_store_desc, 
      channel_type_desc, 
      other_entities_desc, 
      network_diagram_desc, 

      scoping_methods, 
      scoping_confirmation_methods, 
      scoping_method_evaluation, 
      scoping_method_documentation, 
      scoping_method_accuracy, 
      scoping_assessor_name, 

      environment_people, 
      environment_processes, 
      environment_technologies, 
      environment_locations, 
      environment_other, 

      segmentation_used, 
      no_segmentation_assessor, 
      segmentation_how, 
      segmentation_technologies, 
      segmentation_validate, 
      segmentation_function, 
      segmentation_integrity, 
      with_segmentation_assessor, 
      countries_entity_conducts_business, 
      wireless_verify, 
      wireless_impact, 

      sampling_not_used_assessor, 
      sampling_used_assessor, 
      sampling_rational, 
      sampling_standardise_control, 
      sampling_control_validation, 
      third_party_assessor_padss, 
      third_party_assessor_p2pe, 
      third_party_scope_reduction, 
      third_party_comments, 

      sp_is_sp, 
      sp_included_requirements, 
      sp_excluded_requirements, 
      sp_assessor, 
      sp_ip_addr, 
      sp_customer_ip_addr, 

      qs_initial, 
      qs_amount, 
      qs_pass_assessor, 
      qs_document_assessor, 
      qs_correction, 
      qs_assessor_comments, 
      qs_aoc_assessor 
      ) 
     VALUES (
      InProjectID, 
      InTimeframe, 
      InDateSpent, 
      InDateSpentDesc, 
      InQaName, 
      InWhyStoreDesc, 
      InChannelTypeDesc, 
      InOtherEntitiesDesc, 
      InNetworkDiagramDesc, 

      InScopingMethods, 
      InScopingConfirmationMethods, 
      InScopingMethodEvaluation, 
      InScopingMethodDocumentation, 
      InScopingMethodAccuracy, 
      InScopingAssessorName, 

      InEnvironmentPeople, 
      InEnvironmentProcesses, 
      InEnvironmentTechnologies, 
      InEnvironmentLocations, 
      InEnvironmentOther, 

      InSegmentationUsed, 
      InNoSegmentationAssessor, 
      InSegmentationHow, 
      InSegmentationTechnologies, 
      InSegmentationValidate, 
      InSegmentationFunction, 
      InSegmentationIntegrity, 
      InWithSegmentationAssessor, 
      InCountriesEntityConductsBusiness, 
      InWirelessVerify, 
      InWirelessImpact, 

      InSamplingNotUsedAssessor, 
      InSamplingUsedAssessor, 
      InSamplingRational, 
      InSamplingStandardiseControl, 
      InSamplingControlValidation, 

      InThirdPartyAssessorPadss, 
      InThirdPartyAssessorP2pe, 
      InThirdPartyScopeReduction, 
      InThirdPartyComments, 

      InSpIsSp, 
      InSpIncludedRequirements, 
      InSpExcludedRequirements, 
      InSpAssessor, 
      InSpIpAddr, 
      InSpCustomerIpAddr, 

      InQsInitial, 
      InQsAmount, 
      InQsPassAssessor, 
      InQsDocumentAssessor, 
      InQsCorrection, 
      InQsAssessorComments, 
      InQsAocAssessor 
      ); 
    ELSE 
     UPDATE SummaryInfo SET 
      timeframe = InTimeframe, 
      date_spent = InDateSpent, 
      date_spent_desc = InDateSpentDesc, 
      qa_name = InQaName, 
      why_store_desc = InWhyStoreDesc, 
      channel_type_desc = InChannelTypeDesc, 
      other_entities_desc = InOtherEntitiesDesc, 
      network_diagram_desc = InNetworkDiagramDesc, 

      scoping_methods = InScopingMethods, 
      scoping_confirmation_methods = InScopingConfirmationMethods, 
      scoping_method_evaluation = InScopingMethodEvaluation, 
      scoping_method_documentation = InScopingMethodDocumentation, 
      scoping_method_accuracy = InScopingMethodAccuracy, 
      scoping_assessor_name = InScopingAssessorName, 

      environment_people = InEnvironmentPeople, 
      environment_processes = InEnvironmentProcesses, 
      environment_technologies = InEnvironmentTechnologies, 
      environment_locations = InEnvironmentLocations, 
      environment_other = InEnvironmentOther, 

      segmentation_used = InSegmentationUsed, 
      no_segmentation_assessor = InNoSegmentationAssessor, 
      segmentation_how = InSegmentationHow, 
      segmentation_technologies = InSegmentationTechnologies, 
      segmentation_validate = InSegmentationValidate, 
      segmentation_function = InSegmentationFunction, 
      segmentation_integrity = InSegmentationIntegrity, 
      with_segmentation_assessor = InWithSegmentationAssessor, 
      countries_entity_conducts_business = InCountriesEntityConductsBusiness, 
      wireless_verify = InWirelessVerify, 
      wireless_impact = InWirelessImpact, 

      sampling_not_used_assessor = InSamplingNotUsedAssessor, 
      sampling_used_assessor = InSamplingUsedAssessor, 
      sampling_rational = InSamplingRational, 
      sampling_standardise_control = InSamplingStandardiseControl, 
      sampling_control_validation = InSamplingControlValidation, 

      third_party_assessor_padss = InThirdPartyAssessorPadss, 
      third_party_assessor_p2pe = InThirdPartyAssessorP2pe, 
      third_party_scope_reduction = InThirdPartyScopeReduction, 
      third_party_comments = InThirdPartyComments, 

      sp_is_sp = InSpIsSp, 
      sp_included_requirements = InSpIncludedRequirements, 
      sp_excluded_requirements = InSpExcludedRequirements, 
      sp_assessor = InSpAssessor, 
      sp_ip_addr = InSpIpAddr, 
      sp_customer_ip_addr = InSpCustomerIpAddr, 

      qs_initial = InQsInitial, 
      qs_amount = InQsAmount, 
      qs_pass_assessor = InQsPassAssessor, 
      qs_document_assessor = InQsDocumentAssessor, 
      qs_correction = InQsCorrection, 
      qs_assessor_comments = InQsAssessorComments, 
      qs_aoc_assessor = InQsAocAssessor 

     WHERE 
      ProjectID = InProjectID; 
    END IF; 
END// 
DELIMITER ; 

Ошибка:

# 1064 - У Вас есть ошибка в вашем SQL синтаксиса; проверьте руководство, которое соответствует версии сервера MySQL для правильного синтаксиса, чтобы использовать вблизи «IN InNoSegmentationAssessor INT, IN InSegmentationH» в строке 22

Когда я изменяю ENUM обратно в INT, как это было до изменения структуры хранимая процедура загружается без ошибок. Однако он, конечно, не работает, потому что он не соответствует структуре базы данных.

Я искал ответ, но я точно знаю, что я делаю неправильно, в первую очередь в данном конкретном случае. Любые намеки или предложения были бы хорошими.

Да, это массовая процедура. Это устаревший код. Да, это ENUM. Он должен подготовить отчет.

ответ

0

Когда вы объявляете ENUM, вы должны указать значения. Так должно быть:

IN InSegmentationUsed ENUM('Yes', 'No'), 
+0

Так что я должен снова определить значения? разве табличная структура не знает значение? ('да нет') ? – grimthaw

+0

Параметры процедуры не являются частью таблицы. – Barmar

+0

Вместо этого вы можете указать параметр процедуры как 'VARCHAR'. Когда вы используете их для вставки в таблицу, строки будут преобразованы в 'ENUM'. – Barmar

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