[英]How to Update last 3 columns of a temp table
ReqId RespId NAME Part Type Base
----------------------------------------------------------------------------
674508621DF6 D5830288F5C2 00000233A NULL NULL NULL
C356C1E03784 D5830288F5C2 00000233A NULL NULL NULL
当我在没有存储过程部分的情况下运行以下查询时,我得到了上述结果。 现在,我想使用来自SP的返回值来更新SP。
DECLARE @TempTable Table(
ReqId varchar(255),
RespId varchar(255),
Name varchar(255),
Part bit,
Type bit,
Base bit)
INSERT @TempTable (ReqId ,RespId ,Name)
Select * from DistributesSystemsView DSV
join MyDomain MD with(nolock) on MD.MyDomainID = DSV.MyDomainId
where DSV.LotOperationSegmentResponseId=@LotOpSegRespId
存储过程部分
我应该能够使用下面的SP来更新part,Type and Base
列,该SP将MD.DomainId作为来自以上join语句的参数
INSERT @TempTable(Part,Type,Base)
EXECUTE [SOADB].[dbo].[spLocal_AnotherSpl] MD.MyDomainID
Select * from @TempTable
如果我正确理解了您的问题,则可以尝试执行以下操作。
@TempTable
添加新列MyDomainID
@TempTable
@TempTable2
,用于存储从过程中获取的特定@MyDomainID
@TempTable2
后,运行@TempTable
的更新 @MyDomainID
不同值, @MyDomainID
冲洗并重复步骤3和4 询问
DECLARE @TempTable Table(
MyDomainID varchar(255),
ReqId varchar(255),
RespId varchar(255),
Name varchar(255),
Part bit,
Type bit,
Base bit);
INSERT @TempTable (MyDomainId,ReqId ,RespId ,Name)
Select DSV.MyDomainId,ReqId ,RespId ,Name from DistributesSystemsView DSV
join MyDomain MD with(nolock) on MD.MyDomainID = DSV.MyDomainId
where DSV.LotOperationSegmentResponseId=@LotOpSegRespId
DECLARE @TempTable2 Table(
Part bit,
Type bit,
Base bit)
INSERT @TempTable(Part,Type,Base)
EXECUTE [SOADB].[dbo].[spLocal_AnotherSpl] @MyDomainID
UPDATE T
SET Part = Temp2.Part ,
Type = Temp2.Type,
Base = Temp2.Base
FROM @TempTable T
CROSS JOIN @TempTable2 Temp2
WHERE T.MyDomainID = @MyDomainID
假定过程[SOADB]。[dbo]。[spLocal_AnotherSpl]仅返回3,即列(Part,Type,Base)和@MyDomainID(int)是要传递给sp。的单个参数。
Declare @query varchar(max)
Set @query = 'EXEC [SOADB].[dbo].[spLocal_AnotherSpl] ' + ltrim(rtrim( str ( @MyDomainID )))
INSERT @TempTable(Part,Type,Base)
Exec( @query )
如果无法传递单个参数,请传递表类型或在另一个sp。内部写入查询。
您可以设置SP的Part, Type, Base
输出参数。
CREATE PROCEDURE spMyProc
@MyDomainID int,
@part bit output,
@type bit output,
@base bit output
AS
...
然后声明并将变量发送到SP:
DECLARE @part bit, @type bit, @base bit
EXECUTE [SOADB].[dbo].[spLocal_AnotherSpl] MD.MyDomainID, @part output, @type output, @base output
最后,您可以使用值@part @type @base
来做任何您需要做的事情
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.