2013-03-12 5 views
0

Variable никогда не был обновлен с запросом, и всегда имеют значения по умолчанию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

также должны работать переменные (возможно, он будет использовать их позже в другом запросе в процедуре). Вы уверены, что SELECT sprice, cb FROM item WHERE id = 2 возвращает какое-либо значение? –

+0

возвращает значения, даже хорошо работает, если я использую 'INTO @ varname', но некоторые проблемы с вышеупомянутым способом – Shah

ответ

0

Следующие два метода хорошо работает, и нет необходимости DECLARE переменной

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 

Разница в том, что в первом заявлении вы можете иметь столбцы которые не должны храниться в переменной, а во втором - ... INTO ..., каждый указанный столбец должен храниться в переменной.

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

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