2016-01-07 6 views
2

Я пишу простую процедуру, но он не может найти таблицу, в которой я обеспечиваю в котором пункт:MySQL хранимые процедуры

delimiter // 
Create procedure process_order() 
begin 
    if p.name = 'Memory' 
    then 
    select 
    r.Name 
    from 
     manufacturers r, 
     products p 
    where 
     r.name = p.Manufacturer and 
     r.Code = 1; 
    end if; 
end;// 

Как я могу позволить MySQL знать, что р определенная таблица? Есть ли способ объявить все таблицы в начале программы? (Без использования переменных)

+0

Проблема заключается в выражении 'if', а не в предложении' where'. Вы должны описать, что вы пытаетесь сделать. Примерные данные и желаемые результаты могут действительно помочь. –

+0

просто выберите имя продукта, который должен иметь тип «память», и код которого равен 1. –

ответ

1

Основываясь на ваш комментарий, кажется, что вы хотите что-то вроде этого:

select r.Name 
from manufacturers r join 
    products p 
    on r.name = p.Manufacturer 
where r.Code = 1 and p.name = 'Memory'; 

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

+0

да, но как объявить p как продукты до утверждения if? –

+1

Вам вообще не нужно писать, если это утверждение, если я правильно понял. –

+0

@MikheilMetreveli. , , Возможно, вы хотите 'if exists'. Однако логика действительно не ясна. –

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