2013-03-12 6 views
0

변수 쿼리를 업데이트하지 않으며, 항상 이름을 바꿉니다 기본값MySQL을 저장 프로 시저 변수 문제

BEGIN 
    DECLARE sP INT DEFAULT 1; 
    DECLARE cBB INT DEFAULT 0; 

    SELECT sprice, cb INTO sP, cBB FROM item WHERE id = 2; 
END 

무슨 잘못이 (MySQL 버전 5.5.20)와

+0

왜 'SELECT sP AS sprice', 'cB AS cb FROM item where id = 2;'가 아닌가? 이 절차에서 왜이 변수가 필요한가요? –

+1

변수도 작동해야합니다 (나중에 프로 시저에서 다른 쿼리에서 나중에 변수를 사용할 것입니다). 당신은 분명히 sprice, cb 항목에서 어디 id = 2 어떤 값을 반환합니까? –

+0

그것은'INTO @ varname'을 사용할 때도 잘 돌아갑니다. 그러나 위에서 언급 한 방법으로 어떤 문제가 있습니다. – Shah

답변

0

다음 두 가지 방법이 잘 작동하고 필요 변수

BEGIN 
    SELECT @sP := sprice, @cBB := cb FROM item WHERE id = 2; 
END 

를 선언하지 또는 우리가 INTO

BEGIN 
    SELECT sprice, cb INTO @sP, @cBB FROM item WHERE id = 2; 
END 

차이를 수행하려는 경우 첫 번째 문에 당신이 열을 가질 수 있다는 것입니다 변수에 저장할 필요가없는 두 번째 변수는 나열된 모든 열을 변수에 저장해야합니다.

1

여기 약간의 지침을 필요가있어 결코 변수 cb 서로 -

BEGIN 
    DECLARE sP INT DEFAULT 1; 
    DECLARE cB_var INT DEFAULT 0; 

    SELECT sprice, cb INTO sP, cB_var FROM item WHERE id = 2; 
END 

변수 이름은 필드 이름은 다를 것이다.

+0

Var 이름은 상징적이지만 어쨌든 나는 당신의 제안에 대한 혼란을 피하기 위해 메인 포스트에서 그것을 바꿨다. – Shah