UPDATE
문을 사용하여 다른 저장 프로 시저의 결과 필드를 업데이트하려는 저장 프로 시저가 있습니다.SQL - 저장 프로 시저 결과의 필드 업데이트
먼저 저장 프로 시저 :
ALTER PROCEDURE [dbo].[usp_sproc1]
AS
BEGIN
SET NOCOUNT ON;
SELECT *
FROM Database1.dbo.tbl_dB1table AS t1
INNER JOIN Database2.dbo.tbl_dB2table AS t2 ON t1.field = t2.field
INNER JOIN Database3.dbo.tbl_dB3table AS t3 ON t3.field2 = t1.field2 AND t3.field2 = t2.field2
INNER JOIN Database4.dbo.tbl_dB4table AS t4 ON t4.field3 = t2.field3
WHERE (field5 = 'c') AND (some_date IS NULL)
END
두 번째 저장 프로 시저 :
CREATE PROCEDURE [dbo].[usp_ASCRoadAmericaUpdateDateInternal]
AS
BEGIN
SET NOCOUNT ON;
UPDATE Database1.dbo.tbl_dB1table
SET spr1.some_date = GETDATE()
FROM (EXEC dbo.[usp_sproc1]) AS spr1
END
그래서 내가 처음 저장 프로 시저의 결과 집합을 검색 할 다음 오늘 날짜로 Database1.tbl_dB1table
에 some_date 필드 업데이트 그러나 첫 x 째 저장 프로시 듀어에서 리턴하는 레코드 만.
첫 번째 저장 프로 시저의 결과를 CURSOR
에 덤핑하고 각 레코드를 반복하지 않고이 작업을 수행 할 수 있습니까?
첫 번째 저장 프로 시저의 쿼리를 두 번째 저장 프로 시저의 FROM (..)에 배치합니까? 내 생각은 가능한 한 OOP로 sproc을 재사용함으로써 첫 번째 sproc이 변경되면 두 번째 sproc을 변경할 필요가 없도록 만드는 것이 었습니다. – iJared
죄송합니다. 코드를 편집했습니다. dB 및 테이블 이름을 변경하여 애매하게 만들었고 UPDATE 행에서이를 놓쳤습니다. 두 번째 sproc의 첫 번째 sproc에서 WHERE 절을 사용하려고 시도했지만 조인이 누락되어 첫 번째 sproc이 반환하는 것보다 많은 레코드를 업데이트하려고합니다. – iJared