转载:http://blog.sina.com.cn/s/blog_62fcf1970100gecz.html
今天写了一个小小的存储过程,是用于模块查询功能,注:考虑到那个所谓的万能存储过程虽功能强,但效率极低,于是乎自己手写一个,不带分页.多表综合性的查询。这里只列举两表联合查询。
主要功能:完成了多表间 根据ID查询、根据名称查询(支持模糊查询)、根据类型查询(支持排序方式、条数)
根据发布人查询(支持模糊查询、排序功能、条数)查询全部、查询N条数据...
本人声明:本存储过程适合初学者参考以及将多个查询综合起来管理。由于本人SQL语言不是很好,不足之处请指教,同时请SQL高手们多多指教。。。
-- 查询内部视频
--@FilmId 视频标识
--@FilmName 视频名称
--@UserId 发布人
--@TopNum 条数
--@FilmTypeId 类型
--@ColumsFilm 列名
--@OrderStr 排序方式
CREATE PROCEDURE proc_Select_NewInternalFilm
@FilmId int,--视频ID
@FilmName nvarchar(100),--视频名称
@TopNum int,--条数
@FilmTypeId int,--视频类型
@UserId nvarchar(150),--发布视频者
@ColumsFilm varchar(50),--列名
@OrderStr varchar(50)--排序方式 desc asc
AS
declare @sql varchar(500)
if(@FilmId<>0)--根据视频ID查询
begin
set @sql='select i.*,f.FilmTypeName from InternalFilm i,FilmType f where i.FilmTypeId=f.FilmTypeId and FilmId='+Convert(varchar(50),@FilmId)+''
end
else
begin
if(@FilmName<>'')--根据视频名称查询(支持模糊查询)
begin
set @sql='select i.*,f.FilmTypeName from InternalFilm i,FilmType f where i.FilmTypeId=f.FilmTypeId and FilmName like '+@FilmName+''
end
else
begin
if(@FilmTypeId<>0)--根据视频类型查询