如何在sqlserver中使用参数创建存储过程

时间:2013-07-19 10:31:24

标签: sql-server sql-server-2008

如何按年份为前25名学生创建存储过程。         因此,Proc应该把年份作为参数并返回,学生ID,         年度商标总和

Alter  PROCEDURE getstudents
(  
@year INT
)
AS
BEGIN
SELECT student-name FROM tbl_Students WHERE year=@year
Thanks 

3 个答案:

答案 0 :(得分:2)

试试这个 -

ALTER PROCEDURE dbo.getstudents

      @year INT

AS
BEGIN

    SELECT TOP 25
            student_name
          , student_id
          , marks = SUM(marks)
    FROM dbo.tbl_Students 
    WHERE [Year] = @year
     GROUP BY 
            student_name
          , student_id
     ORDER BY marks DESC

END

或者这个 -

ALTER PROCEDURE dbo.getstudents

      @year INT
    , @count INT

AS
BEGIN

     SELECT student_name, student_id, marks
     FROM (
         SELECT 
                 student_name
               , student_id
               , marks
               , rn = ROW_NUMBER OVER (ORDER BY marks DESC) 
         FROM (
             SELECT 
                      student_name
                    , student_id
                    , marks = SUM(marks)
             FROM dbo.tbl_Students 
             WHERE [Year] = @year
               GROUP BY 
                      student_name
                    , student_id
         ) t
     ) t2
    WHERE t2.rn <= @count

END

答案 1 :(得分:2)

试试这个,

ALTER  PROCEDURE getstudents

      @year INT

AS
BEGIN

    SELECT TOP 25 [student-name]
    FROM tbl_Students WHERE year=@year

END

答案 2 :(得分:1)

你以正确的方式传递了参数。

现在,您必须在SP内部查询您想要的信息。

因此最终选择会显示您提取的结果。

显然关于经销商学生,学生i等等,你在这里写下你的数据库模型。