Выбор курсора из двух таблиц - PullRequest
0 голосов
/ 23 декабря 2019

Я написал приведенный ниже код для извлечения 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'

конец;

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...