본문 바로가기
MySql

MySQL MySql Workbench에서 저장 프로 시저 테스트

by 베이스 공부 2021. 2. 3.
반응형

2 개의 테이블에 삽입하는 삽입 저장 프로 시저가 있습니다. 첫 번째 테이블의 Last_Insert_ID를 사용하는 두 번째 테이블입니다. 내 sproc은 다음과 같습니다.

    DELIMITER $$

CREATE DEFINER=`root`@`%` PROCEDURE `new_user_create`(

    IN oFarmName      varchar(45),
    IN oFirstName        varchar(45),
    IN oAddress1         varchar(45),
    IN oCity         varchar(45),
    IN oState         varchar(45),
    IN oZip         varchar(45),
    IN oCountry         varchar(45)
)
BEGIN
    insert into intelliair.individual
    ( FarmName, FirstName)
    values ( oFarmName, oFirstName);
       insert into intelliair.address
    (IndividualID, Address1, City, State, Zip, Country)
    Values (Last_Insert_ID(), oAddress1, oCity, oState, oZip, oCountry);
END

다음은 MySql 워크 벤치에서 쿼리를 테스트하는 방법입니다.

call new_user_create(@myFarm, @MyName, @MyAddress, @MyCity, @MyState, @MyZip, @MyCountry)

내가 얻는 오류 : "Column Address1 cannot be null"

나는 어디로 가고 있습니까? sproc에 있습니까? 아니면 내가 부르는 방식?

 

해결 방법

 

" Column Address1은 null 일 수 없음 "은 intelliair.address.Address1 필드가 null이 아닌 정의되어야 함을 나타냅니다.

그리고 저장 프로 시저에 전달하기 전에 @MyAddress 에 대한 값을 미리 정의했다고 생각하지 않습니다.
정의되지 않은 경우 NULL 로 처리되므로 오류가 발생합니다.

다음과 같이 저장 프로 시저를 호출하기 전에 값을 교차 확인하려면

select @MyAddress;  -- ,@myFarm, @MyName, @MyCity, @MyState, @MyZip, @MyCountry;

업데이트 1 :

각 매개 변수에 대한 값을 직접 입력하여 저장 프로 시저를 호출 할 수 있습니다.
:

call new_user_create(  
    'my Farm value', -- @myFarm  
    'E B', -- @MyName  
    'My Address is SO', -- @MyAddress1  
    'My City is Coders', -- @MyCity  
    'CA', -- @MyState  
    '12345', -- @MyZip  
    'US' -- @MyCountry
);

 

참조 페이지 https://stackoverflow.com/questions/11525774

 

 

반응형

댓글