USE [YuLinEducation_DB]
GO
/****** Object: StoredProcedure [dbo].[usp_MakerLookTeacherInfoPage] Script Date: 07/25/2010 12:19:20 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: <藺宜忠>
-- Create date: <2010-7-23>
-- Description: <通過課程類型查詢該課程授課老師基本信息>
-- =============================================
ALTER PROCEDURE [dbo].[usp_MakerLookTeacherInfoPage] --存儲過程的名稱
-- Add the parameters for the stored procedure here
@pTranType varchar(10), --查詢結果類型,總條數,或結果
@PageIndex int = 0, --顯示第幾頁
@PageSize int = 0, --每頁條數
@OrderBy nvarchar(100) = '',--排序字段
--下面爲根據情況而定義的變量
@CourseTypeID varchar(20) --課程類型的編號
AS
DECLARE @Sql nvarchar(Max) --最終的查詢語句
DECLARE @ConditionSQL nvarchar(2000) --查詢的條件
DECLARE @DataBaseSQL nvarchar(2000) --表之間的關係
BEGIN
SET @Sql = ''
SET @ConditionSQL = ' where 1<>0 '
IF @CourseTypeID <> ''
SET @ConditionSQL = @ConditionSQL + ' and coursetypecode ='''+@CourseTypeID+''' '
set @ConditionSQL =@ConditionSQL+' )'
SET @DataBaseSQL=' '
IF @pTranType = 'COUNT' --查詢出結果的總條數
BEGIN
SET @Sql = 'select count(DISTINCT teachernumber) from teacher where teachernumber in (select teachernumber from course '
SET @Sql = @Sql +@DataBaseSQL+@ConditionSQL
print @Sql
EXEC(@Sql)
RETURN 0
END
IF @pTranType = 'PAGE' --查詢出結果
begin
DECLARE @FirstSQL nvarchar(2000)
DECLARE @LastSQL nvarchar(1000)
SET @FirstSQL = 'select * from (select *,ROW_NUMBER() OVER (ORDER BY ' + @OrderBy + ') AS RowNum from teacher
where teachernumber in (select teachernumber from course'
SET @LastSQL = ''
+' ) as tmpTable WHERE tmpTable.RowNum >= (' + CAST(@PageIndex AS varchar(10)) + '-1) * '
+ CAST(@PageSize AS varchar(10)) + ' + 1 and tmpTable.RowNum <= ' + CAST(@PageIndex * @PageSize AS varchar(20))
SET @SQL = @FirstSQL + @DataBaseSQL + @ConditionSQL + @LastSQL
PRINT @SQL
EXEC(@SQL)
END
END
GO
--exec [usp_MakerLookTeacherInfoPage] 'page',1,2,'teachernumber','ct00005'