【问题标题】:How to add a detailed if condition in a sproc?如何在存储过程中添加详细的 if 条件?
【发布时间】:2012-04-17 10:29:59
【问题描述】:

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

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

当用户输入他的数据时,他返回的 id 应该显示他的类型是什么。 然后我把id和日期拿到当天的任务。

我在想的是创建一个条件来检查是否在 Manager 表中找到了这个 id,如果找到了,它将检索相关任务,否则它将检索与 Worker 相关的任务。

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

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

非常感谢。

【问题讨论】:

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


    【解决方案1】:

    试试这样的:

    IF EXISTS(SELECT ManagerID FROM Managers WHERE ManagerID = @ID) BEGIN
    
        --select from manager tasks
    
    END
    ELSE BEGIN
    
        --select worker tasks
    
    END
    

    我想这就是您要求的,所以现在我将添加我自己的两美分。我不知道您是否能够编辑架构,但是将经理和工作人员放在一个表中并添加一个类型列不是更有意义吗?如果你这样做了,这一切都没有必要了。

    【讨论】:

    • 这正是我所需要的。非常感谢。
    • 很高兴为您提供帮助。如果您满意,请不要忘记标记答案。
    • 很抱歉我的帐户还不能进行投票,但你完全应得的。
    • 至于你的决定,这是完全正确的,但情况比这更复杂。
    【解决方案2】:

    您的问题在您想问的问题上有些令人困惑..

    我想你想知道你的用户(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 数据类型

    【讨论】:

    • 非常感谢 Pratik :) 非常有帮助。
    猜你喜欢
    • 1970-01-01
    • 2015-04-22
    • 1970-01-01
    • 1970-01-01
    • 2013-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-03
    相关资源
    最近更新 更多