Как я использую результаты хранимой процедуры из другого?

Значит ли это, что VS2019 не поддерживает создание проектов PCL сейчас? Есть предложения по исправлению?

blockquote>

Согласно документу Справочник по миграции и обновлению проекта для Visual Studio 2019 Preview :

enter image description here [ 115]

Итак, Visual Studio 2019 по-прежнему поддерживает создание проектов PCL.

Причиной этой проблемы является то, что на размещенной Windows 2019 с агентом VS2019 по умолчанию не устанавливается компонент .NET Portable Library targeting pack:

enter image description here [1112 ]

Более подробную информацию можно найти в Visual Studio 2019 Enterprise .

Чтобы решить эту проблему, вы можете создать свой частный агент и установить этот компонент.

Надеюсь, это поможет.

11
задан John Saunders 14 May 2009 в 02:01
поделиться

4 ответа

Вы бы объявили табличную переменную для хранения результатов хранимой процедуры, а затем перебрали бы их в цикле while:

declare @temp table (
    idx int identity(1,1),
    field1 int,
    field2 varchar(max))

declare @result int

insert into @temp (field1, field2)
exec @result = sp_who

declare @counter int

set @counter = 1

while @counter < (select max(idx) from @temp)
begin
    -- do what you want with the rows here
    set @counter = @counter + 1
end
13
ответ дан 3 December 2019 в 07:14
поделиться

Переписать sp_who как табличную функцию

2
ответ дан 3 December 2019 в 07:14
поделиться

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

create table #spWhoResults
    (spid smallint,
    ecid smallint,
    status nchar(60),
    loginame nchar(256),
    hostname nchar(256),
    blk char(5),
    dbname nvarchar(128),
    cmd nchar(32),
    request_id int)

go

insert  #spWhoResults
exec    sp_who


select  *
from    #spWhoResults

/* 
put your cursor here to loop #spWhoResults to 
perform whatever it is you wanted to do per row
*/
2
ответ дан 3 December 2019 в 07:14
поделиться

То, что указал Джастин, это то, что вам нужно сделать, но вместо того, чтобы делать

while @counter < (select max(idx) from @temp)

, сделайте это

declare @maxid int
select @maxid = max(idx), @counter = 1
from @temp
while @counter < @maxid begin
-- go on
  set @counter = @counter + 1
end

Кроме того, если объявление таблицы как @temp не работает, вы можете объявить это как #temp.

0
ответ дан 3 December 2019 в 07:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: