0
iSeries 시스템에서 매일 데이터 추출을 모니터링하기 위해 동적 SQL을 사용하여 여러 테이블에서 데이터 세트를 검색합니다. 동적 SQL에서 @@ ROWCOUNT 사용
나는 잘 작동 아래의 동적 SQL 코드를 가지고 있지만, 데이터가 내가 를 사용하여 시도 날 너무-- Create a table variable to store user data
DECLARE @myTable TABLE
(
docID INT IDENTITY(1,1),
docRef VARCHAR(50),
letterDir VARCHAR(500)
);
insert @myTable select docRef, saveDir from alpsMaster.dbo.uConfigData
-- Get the number of rows in the looping table
DECLARE @RowCount INT, @SQL nvarchar(500), @LoopSQL nvarchar(2000), @Date varchar(20)
set @Date='29 Oct 2013'
SET @RowCount = (SELECT COUNT(docID) FROM @myTable)
-- Declare an iterator
DECLARE @I INT
-- Initialize the iterator
SET @I = 1
-- Loop through the rows of a table @myTable
WHILE (@I <= @RowCount)
BEGIN
-- Declare variables to hold the data which we get after looping each record
DECLARE @docRef VARCHAR(10), @saveDir VARCHAR(500)
-- Get the data from table and set to variables
SELECT @docRef = docref FROM @myTable WHERE docID = @I
SELECT @saveDir = letterDir FROM @myTable WHERE docID = @I
-- Display the looped data
--PRINT 'Row No = ' + CONVERT(VARCHAR(2), @I) + '; docRef = ' + @docRef
select @LoopSQL='
use alpsProduction;
declare @SQL nvarchar(500);
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(''[dbo].['[email protected]+']''))
begin
if exists(select * from sys.columns
where Name = ''YPTMPID'' and Object_ID = OBJECT_ID(''[dbo].['[email protected]+']''))
begin
set @SQL=''SELECT t.template_name,'''''[email protected]+''''', Y.*
FROM [alpsProduction].[dbo].'[email protected]+' Y, alpsMaster.dbo.uDocumentTemplates t
where DTEINP='''''[email protected]+''''' and t.template_Id=y.YPTMPID and t.docRef='''''[email protected]+'''''''
exec sp_executesql @SQL
end
end
'
--print @LoopSQL
exec sp_executesql @LoopSQL
-- Increment the iterator
SET @I = @I + 1
END
추출 된 경우 I는 각 테이블의 기록을 얻을 수있는 데이터를 실행하려면
IF @@ROWCOUNT >0
Begin
exec sp_executesql @SQL
end
하지만 @@ Rowcount를 채우지 않는 것처럼 보입니다.
뭐죠 전용 (@docRef
로 식별) 현재 테이블이