powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Динамический SQL в UDF (MS SQL Server 2012)
9 сообщений из 9, страница 1 из 1
Динамический SQL в UDF (MS SQL Server 2012)
    #39910746
MsGuns
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот функция:

Код: 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.
43.
44.
45.
46.
47.
48.
USE [TelBook]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER FUNCTION [dbo].[UsF_Test] 
(
  @FieldName sysname,  -- Имя поля, по которому делать фильтрацию (where)
  @FieldValue varchar(max),  -- Значение для фильтрации
  @FieldSort sysname,  -- Имя поля для сортировки (order by)
  @Nlist int,          -- Номер листа, который требуется вернуть
  @QRows int           -- Кол-во строк на листе 
)
RETURNS 
 @RetTable TABLE
 (
 	FIO_ID int, 
	FIO_FAM varchar(255),
	FIO_Name [varchar](255),
	FIO_SName [varchar](255),
	FIO_RoomNo [varchar](8),
	FIO_PersAdrs [varchar](1024) NULL,
	FIO_Pos [int] NULL,
	FIO_OUT [varchar](4) NULL,
	FIO_DateOUT [date] NULL,
	FIO_DEP [int] NULL,
	FIO_MI [int] NULL,
	FIO_Mo [int] NULL,
	FIO_OP [int] NULL,
	FIO_RG [int] NULL,
	FIO_UPR [int] NULL,
	FIO_SUB [int] NULL,
	FIO_Res1 [varchar](1024) NULL,
	FIO_Res2 [varchar](16) NULL,
	FIO_Res3 [varchar](16) NULL,
	FIO_Res4 [varchar](16) NULL
 )

AS
BEGIN
   declare  @SSQL varchar(max)
   set @SSQL = 'Insert into' +'@RetTable (FIO_FAM,FIO_Name)' +' Select * from FIO '
   +' Where '+@FieldName+ ' = '''+@FieldValue+''' order by '+@FieldSort
   +' offset '+ cast((@Nlist-1)*@QRows as varchar(10))+'rows fetch next '+cast(@Qrows as varchar(10))+' rows only '
   Exec (@SSQL)
   RETURN 
END



При попытке записать UDF на сервер выдает

Сообщение 443, уровень 16, состояние 14, процедура UsF_Test, строка 41
Недопустимое использование оператора "EXECUTE STRING", оказывающего побочное действие, в функции.

Что делать ?

Спасибо за помощь
...
Рейтинг: 0 / 0
Динамический SQL в UDF (MS SQL Server 2012)
    #39910747
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Делать динамический sql не в udf.
...
Рейтинг: 0 / 0
Динамический SQL в UDF (MS SQL Server 2012)
    #39910748
MsGuns
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Гавриленко Сергей Алексеевич
Делать динамический sql не в udf.


А в UDF никак ?
...
Рейтинг: 0 / 0
Динамический SQL в UDF (MS SQL Server 2012)
    #39910752
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MsGuns,

Никак. Об этом даже в документации написано.
...
Рейтинг: 0 / 0
Динамический SQL в UDF (MS SQL Server 2012)
    #39910767
MsGuns
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Гавриленко Сергей Алексеевич
MsGuns,

Никак. Об этом даже в документации написано.


Спасибо.
...
Рейтинг: 0 / 0
Динамический SQL в UDF (MS SQL Server 2012)
    #39910778
Фотография vikkiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MsGuns,

Exec/SP в функции не вставляется, (за искл. специальных), ну или CLR тогда
,а наоборот почти без проблем (вызов функций в SP)
...
Рейтинг: 0 / 0
Динамический SQL в UDF (MS SQL Server 2012)
    #39911435
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MsGuns,

такие вещи недопустимо использовать в принципе при разработке для бизнеса.
...
Рейтинг: 0 / 0
Динамический SQL в UDF (MS SQL Server 2012)
    #39912254
MsGuns
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Владислав Колосов
MsGuns,

такие вещи недопустимо использовать в принципе при разработке для бизнеса.


А почему собственно ? Этот динамический запрос выполняется сугубо на сервере, доступа к хранимке со стороны клиента отсутствует в принципе ибо трехзвенка (ASP.NET MVC). Что тут противоречит принципам "разработок для бизнеса" ?
...
Рейтинг: 0 / 0
Динамический SQL в UDF (MS SQL Server 2012)
    #39912257
stenford
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MsGuns

А почему собственно ? Этот динамический запрос выполняется сугубо на сервере, доступа к хранимке со стороны клиента отсутствует в принципе ибо трехзвенка (ASP.NET MVC). Что тут противоречит принципам "разработок для бизнеса" ?

потому-что динамический sql, где поля и данные подставляются произвольно - это самоубийство безопасности, тут не только данные можно выгрести какие угодно, но еще саму базу дропнуть
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Динамический SQL в UDF (MS SQL Server 2012)
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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