你好,我被困在下面的存储过程中。这就是我想要做的。
我有两张桌子: TableA和TableB。
。
我知道如果存在或不存在的地方可以在这个过程中应用,但我只是不知道如何成功地做到这一点。代码在下面。我很感激你能抽出时间。非常感谢
附注:错误是通知人机界面,如果tableA和tableB没有现有的筒仓,缓慢和关闭,然后弹出一个消息框。仅此而已。仅为核查和通知目的。
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 发布于 2013-10-27 00:37:55
我想这就是你想要的:
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
ENDhttps://stackoverflow.com/questions/19613317
复制相似问题