Опубликовано: 17 фев 05
Рейтинг:
Рейтинг:
Автор: Гавриленко Сергей Алексеевич
Прислал: Гавриленко Сергей Алексеевич
Зачастую встает вопрос, а как же использовать хранимую процедуру в запросе?
Хранимую процедуру в запросе использовать не получится. MSSQL Server 2000 такой функциональности не предоставляет. Есть несколько вариантов обхода это проблемы:
1. Оформить хранимую процедуру как функцию.
create function dbo.dataset () returns @out table ( id int, name varchar(150) ) as begin insert @out(id, name) select EmployeeID, FirstName + ' ' + LastName from Northwind.dbo.Employees return end go select * from dbo.dataset() where name like '%King%'Недостатки: в силу некоторых ограничений, накладываемых на синтаксис пользовательских функций, переписать хранимую процедуру в функцию иногда просто невозможно.
2. Получить набор через временную таблицу.
create procedure dbo.dataset_sp as begin set nocount on select EmployeeID, FirstName + ' ' + LastName from Northwind.dbo.Employees end go create table #dataset( id int, name varchar(150) ) insert #dataset exec dbo.dataset_sp select * from #dataset where name like '%King%' drop table #datasetНедостатки:
Комментарии
http://www.sommarskog.se/share_data.html
еще вариант , добавляем в процедуру параметр ИмяТаблицы куда занесём имя временной таблиы в которую хотим сохранить , в процедуре проверяем существование такой таблицы и если она есть динамическим SQL делаем инсерт
еще вариант
...FROM OPENROWSET('SQLNCLI', 'Server=Server;Trusted_Connection=yes;',
'exec spName') AS a;
обновите FAQ для SQL server 2003-2008
а то уже 10 лет тому серверу, о котором речь идёт
=) только после того как отпостил посмотрел пункт 2 =)))
только проснулся - не судите строго )))
use <Database_name>
go
create table dbo.#ltResult
(
itemtype_id int,
itemtype_name varchar(40),
out_cost decimal(12,2)
)
insert into dbo.#ltResult
exec dbo.pGetSklad 0
Да ребята, после других серверов с MS SQL дело иметь неприятно. В другом месте я бы написал select данные from проца where поле='Москва'. А здесь нужно такой бред нести...
а еще каким-нибудь способом это возможно?
O4eni ne ploho
Есть способ №3 - через прилинкованный сервер. Проверено - работает.
good!
@anot@
@anot@
Универсальный вариант с динамическим sql не описан.
Спасибо за уточнение )
Спасибо, за уточнение
как получить наборы данных если структуры наборов данных разные???
Cущественная поправка. Спасибо за ответ вцелом
А что по другому никак ?