Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Можно ли процедуре которая возвращает набор колонок (типа отчет), указать перечень колонок / 6 сообщений из 6, страница 1 из 1
07.08.2018, 16:01
    #39684351
kolyady
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли процедуре которая возвращает набор колонок (типа отчет), указать перечень колонок
Тобиш процедура возвращает например 5 колонок , а мне нужна только 1 из них. Могули я перед вставкой во времянку указать что не 5 а 1 колонку вставить?
...
Рейтинг: 0 / 0
07.08.2018, 16:08
    #39684355
uaggster
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли процедуре которая возвращает набор колонок (типа отчет), указать перечень колонок
kolyady, можно. Через динамический sql.
Но учти, это чревато инъекциями.
...
Рейтинг: 0 / 0
07.08.2018, 16:41
    #39684372
kolyady
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли процедуре которая возвращает набор колонок (типа отчет), указать перечень колонок
uaggster,
скиньте ссылку на пример или визуализируйте как нибудь, буду благодарен
...
Рейтинг: 0 / 0
07.08.2018, 17:02
    #39684387
Владимир Затуливетер
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли процедуре которая возвращает набор колонок (типа отчет), указать перечень колонок
kolyady,

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
drop proc if exists dbo.DynamicSP 
go

drop type if exists dbo.tvpColumnsList
go

create type dbo.tvpColumnsList as table (
	ColumnName nvarchar(128) primary key
)
go

create proc dbo.DynamicSP 
	@ColumnList dbo.tvpColumnsList readonly
as 
	set nocount on; 

	declare @ColumnsListStr nvarchar(max) = ( 
		select ', ' + ColumnName 
		from @ColumnList 
		where ColumnName in ( 
			-- боишся инъекций, перечисли все возможные столбцы тут
			'Col1', 'Col2', 'Col3' --, ...
		)
		for xml path('')
	)

	declare @Cmd nvarchar(max) = N'	
		select id ' + @ColumnsListStr + '
		from dbo.tableName
	'

	print @Cmd

	exec sys.sp_executesql @Cmd, N' -- параметры если необходимо '

go

--вызов
declare @ColumnList dbo.tvpColumnsList
insert into @ColumnList ( ColumnName )
values ('Col1'), ('Col3')
exec dbo.DynamicSP @ColumnList = @ColumnList
...
Рейтинг: 0 / 0
07.08.2018, 17:03
    #39684389
Владимир Затуливетер
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли процедуре которая возвращает набор колонок (типа отчет), указать перечень колонок
Вообще задачу бы полностью описали.
Мне кажется вам в место процедуры достаточно функцию заюзать и выбирать необходимые столбцы.
И еще если будете делать фунцию, делайте инлайн по возможности.
...
Рейтинг: 0 / 0
07.08.2018, 17:58
    #39684427
L_argo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли процедуре которая возвращает набор колонок (типа отчет), указать перечень колонок
Динамич. СКЛ необязателен.
Можно просто по IF выдавать разные select * INTO xxx. При условии, что времянка не нужна для чтения снаружи.

Это не очень хорошая практика.
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Можно ли процедуре которая возвращает набор колонок (типа отчет), указать перечень колонок / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]