Я написал приведенный ниже код для извлечения 2 столбцов из [BB]. [Maps] и одного из frmdetails, имеющих ссылочное значение из [BB]. [Maps]. Я хочу, чтобы внутренний курсор должен обрабатывать только XML поверх курсора выбранной строки (XML). Когда я запускаю свой код, он отображает все строки таблицы. Как я могу получить значение EXEC sp_executesql @ Q3 для существующей строки?
enter code here
начало
declare @My_String NVARCHAR(4000);
declare @countapi as INT
declare @countloop INT =1;
declare @id int;
declare @projnumber varchar(20);
declare @importdatetime datetime;
declare @xml xml;
declare @formfieldpath varchar(2000);
declare @fieldname varchar(200);
declare @fildty varchar(200);
declare getformxmlcur cursor for
select id,projnumber,xml,importdatetime FROM [TestDatabase].[frmdetails];
open getformxmlcur;
fetch next from getformxmlcur into @id,@projnumber,@xml, @importdatetime;
set @countapi = (select Count(*) from [TestDatabase].[BB].[maps] )
--print 'countapi in the start is --'
--print @countapi
while @@FETCH_STATUS = 0
begin
declare apimapcur cursor for
select [formfieldpath],[fieldname],[fildty] from [BB].[maps]
open apimapcur;
fetch next from apimapcur into @formfieldpath,@fieldname,@fildty;
while @@FETCH_STATUS = 0
begin
print 'XML path is ' + Cast(@formfieldpath as Varchar(1500));
print 'fieldname: ' + Cast(@fieldname as Varchar);
print 'fieldtype: ' + Cast(@fildty as Varchar);
DECLARE @Q1 NVARCHAR(3000)
DECLARE @Q2 NVARCHAR(3000)
DECLARE @Q3 NVARCHAR(3000)
DECLARE @Q4 NVARCHAR(3000)
SET @Q1 = 'Select' +' ' + @formfieldpath
SET @Q2 ='FROM [TestDatabase].[landing].[frmdetails]'
SET @Q3 = @Q1 +' '+ @Q2
Print @Q3
EXEC sp_executesql @Q3
fetch next from apimapcur into @formfieldpath,@fieldname,@fildty;
end
close apimapcur;
deallocate apimapcur
print 'FINISH apimapcur'
fetch next from getformxmlcur into @id,@projnumber,@xml, @importdatetime;
--Set @countapi = (select Count(*) from [TestDatabase].[maps] );
end
close getformxmlcur;
deallocate getformxmlcur
print 'getformxmlcur'
конец;