如何在sproc中添加详细的if条件?

时间:2012-04-03 18:06:54

标签: asp.net sql stored-procedures conditional-statements

我正在一个网站上工作,我应该从用户那里获取数据,然后根据他的职业信息向他展示他当天应该完成的任务

我在数据库“Manager”和“Worker”中有两个主表。

当用户输入他的数据时,他返回的id应显示他的类型是什么。 然后我拿着身份证和日期来完成当天的工作。

我正在考虑的是制定一个条件来检查是否在Manager表中找到了这个id&如果发现它将检索相关任务,否则它将检索与工作者相关的任务。

但我之前从未在SPROC上写过条件,而我发现的所有条件是x =< > ......等(这不是我想要的)。

那么,如果您告诉我它是如何编写的,或者是否有任何有用的教程或文章提到类似的情况,是否可能?

非常感谢。

2 个答案:

答案 0 :(得分:1)

尝试这样的事情:

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

    --select from manager tasks

END
ELSE BEGIN

    --select worker tasks

END

我认为这就是你所要求的,所以现在我要加两分钱。我不知道你是否能够编辑模式,但将管理器和工作者放在一个表中并添加一个类型列是不是更有意义?如果你这样做的话,这一切都不是必需的。

答案 1 :(得分:1)

你的问题在某种程度上让你感到困惑......

我想您想知道您的用户(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是您的本地变量,将是varchar2string数据类型