首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

存储过程有关问题?

2012-01-18 
存储过程问题??-------------谁可以帮我解释一下下面这段代码的意思真心感谢!!!--------------set ANSI_NU

存储过程问题??

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

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) 


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
[解决办法]
以上纯属猜测,如有雷同,纯属巧合~

begin...end就是一个语句块,跟C#里面的花括号“{}”,sql里面可没有花括号,只能用begin...end

LZ,一些语法问题你可以查sql server联机丛书,上面介绍的很详细,我觉得sql server联机丛书比任何一个软件的帮助文挡做的都好~

热点排行