Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Использование процедуры вместо SELECT  [new]
BrykAlien
Member [заблокирован]

Откуда: Волгодонск
Сообщений: 1344
Здраствуйте
Есть несколько процедур, в которых запрос отсеивается по некоторому условию:

---------------------------------------------------------------------------------------------------
CREATE PROCEDURE dbo.myproc;3
	@aaa	int
AS
SET NOCOUNT ON
	SELECT
		valueA, 
		valueB, 
		ValueFilter
	FROM 
		tbl_A	
	WHERE 
		ValueFilter NOT IN (	SELECT	ValueFilter 
					FROM  	tbl_Filter
					WHERE 	ValueFilter IS NULL	)
GO

-----------------------------------------------------------------------------------------------
CREATE PROCEDURE dbo.myproc;5
	@aaa	int,
	@bbb	int
AS
SET NOCOUNT ON
	SELECT
		valueX, 
		valueY, 
		ValueFilter
	FROM 
		tbl_B	
	WHERE 
		ValueFilter NOT IN (	SELECT	ValueFilter 
					FROM  	tbl_Filter
					WHERE 	ValueFilter IS NULL	)
GO
Можно ли сделать процедуру вида:
---------------------------------------------------------------------------------------------------
CREATE PROCEDURE dbo.myproc;100500
AS
SET NOCOUNT ON
	SELECT	ValueFilter 
	FROM  	tbl_Filter
	WHERE 	ValueFilter IS NULL	
GO
И использовать её вместо SELECT'а
---------------------------------------------------------------------------------------------------
CREATE PROCEDURE dbo.myproc;3
	@aaa	int
AS
SET NOCOUNT ON
	SELECT
		valueA, 
		valueB, 
		ValueFilter
	FROM 
		tbl_A	
	WHERE 
		ValueFilter NOT IN (exec dbo.myproc;100500)
GO
(Конечно же так как я написал в последнем примере- не работает, ошибка синтаксиса)
7 июн 11, 13:33    [10776459]     Ответить | Цитировать Сообщить модератору
 Re: Использование процедуры вместо SELECT  [new]
Glory
Member

Откуда:
Сообщений: 104751
Процедуры в SELECT использовать нельзя
Пишите функции
7 июн 11, 13:58    [10776644]     Ответить | Цитировать Сообщить модератору
 Re: Использование процедуры вместо SELECT  [new]
Уленшпигель
Member

Откуда:
Сообщений: 115
BrykAlien,

как вы уже убедились - нельзя. зато можно создать представление или табличную функцию. табличная функция может быть даже с параметрами.
7 июн 11, 14:00    [10776652]     Ответить | Цитировать Сообщить модератору
 Re: Использование процедуры вместо SELECT  [new]
BrykAlien
Member [заблокирован]

Откуда: Волгодонск
Сообщений: 1344
Уленшпигель,

Спасибо! Я что-то зациклился на этих процедурах... :)
7 июн 11, 14:08    [10776726]     Ответить | Цитировать Сообщить модератору
 Re: Использование процедуры вместо SELECT  [new]
UV
Member

Откуда: EU
Сообщений: 36
Glory
Процедуры в SELECT использовать нельзя
Пишите функции


Абсолютно не согласен. Glory, прочитайте больше об UDF и потом рекомендуйте.
7 июн 11, 16:37    [10777777]     Ответить | Цитировать Сообщить модератору
 Re: Использование процедуры вместо SELECT  [new]
Glory
Member

Откуда:
Сообщений: 104751
UV
Glory
Процедуры в SELECT использовать нельзя
Пишите функции


Абсолютно не согласен. Glory, прочитайте больше об UDF и потом рекомендуйте.

Тогда приведите решение с использованием процедур в запросах
7 июн 11, 16:40    [10777801]     Ответить | Цитировать Сообщить модератору
 Re: Использование процедуры вместо SELECT  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
UV
Абсолютно не согласен. Glory, прочитайте больше об UDF и потом рекомендуйте.
Где почитать и что? Мне тоже стало вдруг интересно, может я зря их использую последние ндцать лет и надо быстро-быстро все переписть на что-нибудь другое?
7 июн 11, 16:41    [10777805]     Ответить | Цитировать Сообщить модератору
 Re: Использование процедуры вместо SELECT  [new]
flexgen
Member

Откуда: Город на песке
Сообщений: 852
UV
Абсолютно не согласен. Glory, прочитайте больше об UDF и потом рекомендуйте.


UDF - это User-Defined Function. Так с чем Вы там не согласны?
7 июн 11, 17:41    [10778338]     Ответить | Цитировать Сообщить модератору
 Re: Использование процедуры вместо SELECT  [new]
UV
Member

Откуда: EU
Сообщений: 36
flexgen
UV
Абсолютно не согласен. Glory, прочитайте больше об UDF и потом рекомендуйте.


UDF - это User-Defined Function. Так с чем Вы там не согласны?


Glory написал "Пишите функции" - не согласен, что лучше UDF чем SP. UDF имеют очень, ограниченое приложение и в етом случае SP на много раз лучше. Обеснять почему будеть очень долго.
8 июн 11, 15:56    [10783973]     Ответить | Цитировать Сообщить модератору
 Re: Использование процедуры вместо SELECT  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
UV
Glory написал "Пишите функции" - не согласен, что лучше UDF чем SP. UDF имеют очень, ограниченое приложение и в етом случае SP на много раз лучше. Обеснять почему будеть очень долго.
Вы просто не умеете их готовить. Да, бывает хуже. Да, бывает вообще хрен функцию напишешь. Глори же не сказал, "пишите функции и отключайте моск".

Так что ваша категоричность без аргументов, которые вам лень приводить, смотрится как минимум неуместно.
8 июн 11, 15:59    [10784013]     Ответить | Цитировать Сообщить модератору
 Re: Использование процедуры вместо SELECT  [new]
Glory
Member

Откуда:
Сообщений: 104751
UV
flexgen
пропущено...


UDF - это User-Defined Function. Так с чем Вы там не согласны?


Glory написал "Пишите функции" - не согласен, что лучше UDF чем SP. UDF имеют очень, ограниченое приложение и в етом случае SP на много раз лучше. Обеснять почему будеть очень долго.

"Пишите функции" надо читать, как "пишите функции", а не как "UDF лучше чем SP"
И где реализация задачи автора темы через SP ?
8 июн 11, 16:02    [10784053]     Ответить | Цитировать Сообщить модератору
 Re: Использование процедуры вместо SELECT  [new]
BrykAlien
Member [заблокирован]

Откуда: Волгодонск
Сообщений: 1344
Я сделал через представление:
---------------------------------------------------------------------------------------------------
CREATE PROCEDURE dbo.myproc;3
	@aaa	int
AS
SET NOCOUNT ON
	SELECT
		valueA, 
		valueB, 
		ValueFilter
	FROM 
		tbl_A	
	WHERE 
		ValueFilter NOT IN (SELECT ValueFilter FROM dbo.MyGreatMortalView)
GO
8 июн 11, 16:53    [10784567]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить