Как я могу получить данные из хранимой процедуры в виде таблицы, как обычный запрос - PullRequest
1 голос
/ 08 сентября 2010

Я хочу получить данные из хранимой процедуры в табличном формате, как обычный SQL-запрос.

что я должен изменить?

моя процедура .....

set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go


ALTER PROCEDURE [dbo].[agg] 

AS    
DECLARE @stud int,
@lec int,
@dept varchar(50),
@sem int

select @stud=s.sem_no_stud,
@lec=sum(convert (int,sub.sub_lec)),@dept=d.dept_name,@sem=count(s.sem_id)
from sem_info s,sub_info sub,dept_info d,course_info co 
where sub.sdept=d.dept_id and 
s.sem_caurse_id=co.co_id and 
sub.sub_sem_id=s.sem_id and co.co_id=149 
group by d.dept_name,s.sem_id,s.sem_no_stud

return (@stud)
return(@lec)

exec agg;

Ответы [ 2 ]

1 голос
/ 08 сентября 2010

Переменные, кажется, не имеют смысла.Вы можете просто SELECT напрямую.Кроме того, вам нужно go перед вашим exec, чтобы избежать непреднамеренного создания рекурсивной процедуры, и вам будет безопаснее использовать явный синтаксис JOIN, как показано ниже, чтобы избежать непреднамеренного декартового объединения.

0 голосов
/ 08 сентября 2010

Вы просто пишете оператор SELECT с переменными в следующем виде:

SELECT @stud AS ColumnNameA, @lec AS ColumnNameB

Однако, на что следует обратить внимание, что если запрос возвращает несколько строк? Присвоение таким переменным вернет только одну из этих записей - будут возвращены значения последних записей, которые им будут назначены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...