首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果存在server问题

如果存在server问题
EN

Stack Overflow用户
提问于 2013-10-27 00:14:26
回答 1查看 676关注 0票数 1

你好,我被困在下面的存储过程中。这就是我想要做的。

我有两张桌子: TableA和TableB。

  • TableA有名为“筒仓”、“慢”和“关闭”的列。
  • 表B的列名为“筒仓”、“partno”、“慢速”和“close”。

  • 我有一个人机界面程序,是发送给我的筒仓和部分,我是发送回缓慢和接近。
  • 我首先需要查看TableA,看看tableA中是否有与人机界面发送给我的内容相匹配的筒仓和部件。
  • 如果是这样的话,我只需发送回缓慢和接近人机界面(输出)。
  • 如果TableA没有筒仓和零件,那么我需要
    • 查看只位于筒仓上的TableB,并选择顶部1(可能有多个具有相同筒仓号的行,因此我需要顶部1),并将缓慢和接近人机界面的信息发回。
    • 我还需要将筒仓、partno (人机界面发送给我)、缓慢和关闭(从TableB)插入到TableA中的新行中。

  • 如果这个过程被多次触发,那么它就不应该一直在tableA中插入行。

我知道如果存在或不存在的地方可以在这个过程中应用,但我只是不知道如何成功地做到这一点。代码在下面。我很感激你能抽出时间。非常感谢

附注:错误是通知人机界面,如果tableA和tableB没有现有的筒仓,缓慢和关闭,然后弹出一个消息框。仅此而已。仅为核查和通知目的。

代码语言:javascript
复制
USE [Product]
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER Proc  [Controls].[spSiloSettings]

    @Silo int
    ,@PartNo Varchar (50)
    ,@Slow float output 
    ,@Close  float output 
    ,@errorout int output
AS

if  exists (select slow, close from controls.TableA where  @silo = silo and @partno= partno)

set @errorout = 0

select @slow= slow, @close = close 
    from TableA
    where @silo = silo  

if not exists(select  top 1 @silo = silo,  @slow= slow, @close = close)
    From controls.TableB
    Where silo = @silo

insert into controls.TableA (silo, partno, slow, close) 
    values (@silo, @partno ,@slow, @close)

end 
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-10-27 00:37:55

我想这就是你想要的:

代码语言:javascript
复制
USE [Product]
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER Proc  [Controls].[spSiloSettings]
    @Silo int
    ,@PartNo Varchar (50)
    ,@Slow float output 
    ,@Close  float output 
    ,@errorout int output
AS
BEGIN
    declare @found bit = 0

    set @errorout = 0

    select @slow = slow
    , @close = close 
    , @found = 1
    from controls.TableA 
    where silo = @silo 
    and partno = @partno 

    if @found != 1
    begin

        select top 1
          @found = 1
        , @slow= slow
        , @close = close
        From controls.TableB
        Where silo = @silo
        --order by something to ensure consistent results?

        if @found = 1
        begin
            insert into controls.TableA (silo, partno, slow, close) 
            values (@silo, @partno ,@slow, @close)
        end
        else
        begin
            @errorout = 1 --neither A nor B held the value we were after
        end
    end

END
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19613317

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档