Вы можете использовать concatMap
:
import { of } from 'rxjs';
import { concatMap } from 'rxjs/operators';
of([65, 66, 67, 68]).pipe(concatMap(x => x)).subscribe(console.log);
Это возможно, но конечно не правильный способ пойти:
USE test
GO
CREATE procedure dbo.select1 AS
SELECT 1
GO
EXEC sp_addlinkedserver @server='OQtest', @datasrc='localhost', @provider='SQLNCLI', @srvproduct=''
GO
SELECT * FROM OPENQUERY(OQtest, 'test.dbo.select1')
Вы, возможно, также должны скорректировать настройки безопасности на сервере для этого для работы.
Вы не можете сделать этого, однако можно сделать это как вставку. например.
insert mytable
exec myStoredProcedure
Кроме того, никогда не называйте свои хранимые процедуры sp_xxxx. Это вызвано тем, что SQL будет всегда искать в области системной хранимой процедуры из-за sp_ прежде, чем посмотреть в пользовательских хранимых процедурах, ведя к маленькой потере в производительности, которая могла добавить его, чтобы быть довольно значительной на процессе, который часто выполняется.
Что, если сохраненный proc не возвращает строк? Несколько наборов результатов? Изменения? Потенциальные использования сохраненного proc - многие и варьировались.
Когда Вы имеете SELECT * FROM TableOrView
, существует прямая привязка и легко проверенный синтаксис и структура.
Более правильно, в реляционном смысле, сохраненный proc не является отношением/таблицей, таким образом, Вы не можете выбрать из него.
Определяемые пользователем функции достигают того, что Вы хотите, но позволяете коду соответствовать некоторому понятию отношения/таблицы.
Вы не можете сделать этого, но Вы могли рассмотреть функцию в sqlserver2005. Вот функция в качестве примера, которая составляет таблицу из списка разделенных запятой значений
Create Function [dbo].[CsvToInt] ( @Array varchar(1000))
returns @IntTable table
(IntValue int)
AS
begin
declare @separator char(1)
set @separator = ','
declare @separator_position int
declare @array_value varchar(1000)
set @array = @array + ','
while patindex('%,%' , @array) <> 0
begin
select @separator_position = patindex('%,%' , @array)
select @array_value = left(@array, @separator_position - 1)
Insert @IntTable
Values (Cast(@array_value as int))
select @array = stuff(@array, 1, @separator_position, '')
end
return
end
И затем простой выбор из функции...
Select * FROM dbo.CsvToInt('1,2,3,5')
И Вы получите значение таблицы.
Вы можете использовать подход, описанный ck, но это не очень рекомендуется. Вы можете проверить секцию INSERT-EXEC большого поста Как обмениваться данными между хранимыми процедурами от Эрланда Соммарского для более подробной информации.