![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Можно ли написать select из процедуры в MS SQL 2000? [D6, MSSQL]
oleon © (2003-01-13 12:23:00)Как можно написать запрос такого рода?
select * from Table1 where ID in (select ID from <процедура>...
В InterBase такая возможность была сто пудов...
А в MS SQL 2000 можно так извратиться?
oleon (2003-01-14 18:10:00) [1]Дело в том, что нужно в зависимости от входного параметра типа Varchar (имя таблицы) формировать строку запроса и потом написать execute(@S), а в функции execute писать нельзя... поэтому хотелось сделать это все в процедуре...
ЮЮ (2003-01-14 03:59:00) [2]в MS SQL 2000 есть UDF, которые можно использовать в запросах как таблицы:
CREATE FUNCTION dbo.StudyPlanFaculties()
RETURNS @StudyPlanFaculties TABLE ( CODE int )
AS
BEGIN
...
END
CREATE VIEW dbo.V_StudyPlans
AS
SELECT *
FROM dbo.U_StudyPlans
WHERE dbo.U_StudyPlans.Faculty in (SELECT CODE FROM StudyPlanFaculties()) and (Signed is null)
WITH CHECK OPTION
BlackTiger (2003-01-14 00:38:00) [3]А еще лучше (если возможно, конечно) использовать вместо хранимой процедуры table-функцию.
Delirium (2003-01-13 12:40:00) [4]В чистом виде нет. Существует конструкция:
insert MyTable
exec MyProc
Однако тут очевиден недостаток - необходимо заранее знать структуру получаемых данных. Есть ещё один подход:
select * from OpenQuery(MyServer, "exec MyProc")