Как добавить подробное условие if в sproc? - PullRequest
0 голосов
/ 03 апреля 2012

Я работаю над веб-сайтом, на котором я должен получить данные от пользователя, а затем показать ему задачи, которые он должен выполнить в день, основываясь на его информации о карьере

У меня есть две основные таблицы в базе данных «Менеджер» и «Рабочий».

Когда пользователь вводит свои данные, его возвращенный идентификатор должен показывать, какой у него тип. Затем я беру идентификатор и дату и получаю задачи дня.

Я думаю о том, чтобы создать условие, чтобы проверить, найден ли этот идентификатор в таблице «Менеджер» и, если он найден, он получит связанные задачи, или же он получит задачи, связанные с рабочим.

Но я никогда раньше не писал условия в SPROC, и все, что я нахожу, это если x = <> ... и т. Д. (А это не то, что я хочу).

Так, было бы возможно, если бы вы сказали мне, как это написано, или есть какие-нибудь полезные учебники или статьи, в которых упоминается похожая ситуация?

Большое спасибо.

Ответы [ 2 ]

1 голос
/ 03 апреля 2012

ваш вопрос несколько сбивает с толку, что вы хотите задать ..

я думаю, вы хотите знать, присутствует ли ваш пользователь (user_id) в вашей таблице менеджера или в вашей рабочей таблице ..

, что вы можете легко узнать с помощью следующего запроса ..

select 'Manager' as u_type from manager 
where manager_id = <user_id>
union all 
select 'Worker' as u_type from worker
where worker_id = <user_id>

, поэтому с помощью этого значения u_type вы можете легко определить, какая информация о вашем типе пользователя ..

После этого, как вы упомянули, очень просто получать данные по дням ...

этот запрос вы можете использовать в хранимой процедуре как

select u_type 
into l_u_type 
from 
(
    select 'Manager' as u_type from manager 
    where manager_id = <user_id>
    union all 
    select 'Worker' as u_type from worker
    where worker_id = <user_id>
)

, где l_u_type - ваш локальныйпеременная будет иметь varchar2 или string тип данных

1 голос
/ 03 апреля 2012

Попробуйте что-то вроде этого:

IF EXISTS(SELECT ManagerID FROM Managers WHERE ManagerID = @ID) BEGIN

    --select from manager tasks

END
ELSE BEGIN

    --select worker tasks

END

Я думаю, это то, что вы просили, так что теперь я добавлю свои два цента.Я не знаю, можете ли вы вообще редактировать схему, но не будет ли более разумным поместить менеджеров и рабочих в одну таблицу и добавить столбец типа?Если бы вы сделали это таким образом, ничего из этого не понадобилось бы.

...