日期:2014-05-18  浏览次数:20375 次

存储过程问题??

-------------谁可以帮我解释一下下面这段代码的意思·真心感谢!!!--------------

set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go



ALTER PROCEDURE [dbo].[Pro_GetSearchFatList]
/* *******************************************************************************************************************************
  时间:2007-12-17日
  作者:王凯  
  说明:获得厂商列表

  ***************************************************************************************************************************************** */

@pageSize int,
@pageNo int,
@type varchar(50),
@value varchar(50),
@myOrderBy as varchar(50),
@ExSql varchar(200)
AS

declare @tableName nvarchar(50)
declare @KeyWord nvarchar(20)
declare @FieldName nvarchar(200)
declare @where nvarchar(500)
declare @orderBy nvarchar(500)
--set @tableName=' tb_article' ----表名
set @tableName=' V_SearchFatList ' ----表名

set @KeyWord=' Auto_CompanyInfoID ' --主键或唯一不重复的字段
set @FieldName='*' --要显示的字段名称

---------------排序
set @orderBy='order by CompanyRegistTime asc ' 
-- set @orderBy=' order by id desc ' 

--if(@myOrderBy<>'' and @myOrderBy<>null)
if(@myOrderBy<>'' )

begin 
set @orderBy=' '+@myOrderBy
end
-----条件
set @where=' 1=1 '

if (@type<>'' and @value<>'')
begin
--Set @where=@where+' and '+@type +'='''+@value+''' '
Set @where=@where+' and '+@type +' like ''%'+@value+'%'' '
end
else
begin
set @where=' 1=1 '
end
if (@ExSql<>'' and @ExSql<>'')
begin
--Set @where=@where+' and '+@type +'='''+@value+''' '
Set @where=@where+' and '+@ExSql
end

exec usp_page @pageSize,@PageNo,@tableName,@KeyWord,@FieldName,@where,@orderBy




------解决方案--------------------
就是根据各个sql 语句要素是否为空,来进行sql 组合。

------解决方案--------------------
set 赋值语句
------解决方案--------------------
根据参数组合出另外一些参数,调用usp_page
------解决方案--------------------
set 是为变量赋值的关键字

set @变量 = '111'

------解决方案--------------------
探讨
set 赋值语句

------解决方案--------------------


set ANSI_NULLS ON 
set QUOTED_IDENTIFIER ON 
go 

--上面两行你可以不用管

--下面进行了一个分页的存储过程
ALTER PROCEDURE [dbo].[Pro_GetSearchFatList] 
@pageSize int, --每页大小
@pageNo int, --页码
@type varchar(50), --某一列的列名
@value varchar(50), --该列的关键字
@myOrderBy as varchar(50), --进行排序的条件
@ExSql varchar(200) --where查询条件
AS 
--用declare声明了一系列的变量,已经说的很清楚
declare @tableName nvarchar(50) 
declare @KeyWord nvarchar(20) 
declare @FieldName nvarchar(200) 
declare @where nvarchar(500) 
declare @orderBy nvarchar(500) 
--下面用set依次为声明的变量进行辅值
--set @tableName=' tb_article' ----表名 
set @tableName=' V_SearchFatList ' ----表名 

set @KeyWord=' Auto_CompanyInfoID ' --主键或唯一不重复的字段 
set @FieldName='*' --要显示的字段名称 

---------------排序 
set @orderBy='order by CompanyRegistTime asc '
-- set @orderBy=' order by id desc '

--if(@myOrderBy <>'' and @myOrderBy <>null)