下面这是我在SQL Server Profiler中检测到的
declare @p1 int
set @p1=NULL
declare @p3 int
set @p3=NULL
exec sp_prepexecrpc @p1 output,N'get_gq_search',@p3 output,15,3,'U.vip_class desc,U.last_update_time desc
','
','
','
','螺纹钢
',' ','
',' ',' ',0
select @p1, @p3
存储过程如下:
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go-- =============================================
-- Author: King
-- Create date: 2009-05-04
-- Description: 根据查询条件获取新闻
-- =============================================
ALTER PROCEDURE [dbo].[get_gq_search]
-- Add the parameters for the stored procedure here
@rowscount int =0 output,
@PageSize int = 10, --每页记录数
@PageIndex int = 1, --当前页码
@OrderField varchar(5000) = NULL, --排序字段(必须!支持多字段)
@City nvarchar(100) = NULL, --交货地
@cd nvarchar(100)=NULL,----产地
@blockname nvarchar(50)=NULL,
@keyword varchar(5000)=NULL,
@Material nvarchar(50) = NULL,
@Length nvarchar(50)=NULL,
@Width nvarchar(50)=NULL,
@Height nvarchar(50)=NULL,
@blockid int =0
--WITH ENCRYPTION
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
if ( @PageSize <=0 )
set @PageSize = 1
if ( @PageIndex <=0 )
set @PageIndex = 1
--生成SQL语句
DECLARE @SQL varchar(8000)
DECLARE @SQL_1 varchar(8000)
DECLARE @WhereSQL varchar(8000)
DECLARE @strblockname varchar(8000)
DECLARE @Num int
SET @strblockname=''
SET @WhereSQL = ''
SET @Num = @PageSize * (@PageIndex - 1) if (@City<>'' and @City IS NOT NULL)----交货地
set @WhereSQL = @WhereSQL + ' and jhd like ''%'+ltrim(rtrim(@City))+'%'''
if (@cd<>'' and @cd is not null)----产地
set @WhereSQL = @WhereSQL + ' and cd like ''%'+ltrim(rtrim(@cd))+'%'''
if (@Material<>'' and @Material is not null)----材质
set @WhereSQL = @WhereSQL + ' and cz like ''%'+ltrim(rtrim(@Material))+'%'''
if (@Length<>'' and @Length is not null)----长度
set @WhereSQL = @WhereSQL + ' and length = '''+ltrim(rtrim(@Length))+''''
if (@Width<>'' and @Width is not null)----宽度
set @WhereSQL = @WhereSQL + ' and width = '''+ltrim(rtrim(@Width))+''''
if (@Height<>'' and @Height is not null)----厚度
set @WhereSQL = @WhereSQL + ' and height = '''+ltrim(rtrim(@Height))+''''
if (@blockname <> '' and (@blockname is not null))----搜索关键字
set @strblockname = ' and title like ''%'+ltrim(rtrim(@blockname))+'%'''
if (@keyword <> '' and (@keyword is not null))----搜索关键字
set @strblockname = ' and title like ''%'+ltrim(rtrim(@keyword))+'%'''
if ( @blockid <> 0 )
set @WhereSQL = @WhereSQL + ' and blockid = '+ convert(varchar(50),@blockid)
--获取记录总数
DECLARE @SQLcount nvarchar(4000)
--set @SQL ='select top '+cast(@PageSize as varchar(80))+' News.id,News.userid,News.title,U.vip_class,U.last_update_time,News.blockid,News.count,B_s.spec_ico,News.cd,News.ck,News.cz,News.jhd,News.length,News.width,News.height,News.price,News.simage,News.bimage,News.createdate,U.company_name,U.userinfo,U.operation,U.web_url,U.logo,P.product_list from dv_user U join info_list News on U.userid=News.userid join (select distinct(dbo.f_union(i.userid)) as product_list,i.userid from info_list i where info_type=1 and supply_type=0 '+ @strblockname +' group by userid) P on P.userid=U.userid join block_spec B_s on B_s.id=News.blockid where News.id in(select max(id) id from info_list where info_type=1 and supply_type=0 and userid<>0 '+ @strblockname +' group by userid) '
set @SQL ='select top '+cast(@PageSize as varchar(80))+' News.id,News.userid,News.title,U.vip_class,U.last_update_time,u.block_info_text as product_list,News.blockid,News.count,B_s.spec_ico,News.cd,News.ck,News.cz,News.jhd,News.length,News.width,News.height,News.price,News.simage,News.bimage,News.createdate,U.company_name,U.userinfo,U.operation,U.web_url,U.logo from dv_user U join info_list News on U.userid=News.userid join block_spec B_s on B_s.id=News.blockid where News.id in (select max(id) id from info_list where info_type=1 and supply_type=0 and userid<>0 '+ @strblockname +' group by userid) '
set @SQL_1 = 'select TOP '+cast(@Num as varchar(80))+' News.id from dv_user U join info_list News on U.userid=News.userid join block_spec B_s on B_s.id=News.blockid where News.id in (select max(id) id from info_list where info_type=1 and supply_type=0 and userid<>0 '+ @strblockname +' group by userid) '
set @SQLcount = N'select @rowscount=count(News.id) from dv_user U join info_list News on U.userid=News.userid join block_spec B_s on B_s.id=News.blockid where News.id in (select max(id) id from info_list where info_type=1 and supply_type=0 and userid<>0 '+ @strblockname +' group by userid) '
set @SQLcount = @SQLcount + @WhereSQL
--print @SQLcount
exec sp_executesql @SQLcount,N'@rowscount int OUTPUT',@rowscount OUTPUT
--根据页码和每页记录数合成sql语句 set @SQL = @SQL + @WhereSQL
if 1 < @PageIndex
BEGIN
set @SQL = @SQL + ' and News.id NOT IN (' + @SQL_1 + @WhereSQL + ' order by ' + @OrderField +')'
END
set @SQL = @SQL + ' order by ' + @OrderField
exec (@SQL) --return (0)
END
declare @p1 int
set @p1=NULL
declare @p3 int
set @p3=NULL
exec sp_prepexecrpc @p1 output,N'get_gq_search',@p3 output,15,3,'U.vip_class desc,U.last_update_time desc
','
','
','
','螺纹钢
',' ','
',' ',' ',0
select @p1, @p3
存储过程如下:
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go-- =============================================
-- Author: King
-- Create date: 2009-05-04
-- Description: 根据查询条件获取新闻
-- =============================================
ALTER PROCEDURE [dbo].[get_gq_search]
-- Add the parameters for the stored procedure here
@rowscount int =0 output,
@PageSize int = 10, --每页记录数
@PageIndex int = 1, --当前页码
@OrderField varchar(5000) = NULL, --排序字段(必须!支持多字段)
@City nvarchar(100) = NULL, --交货地
@cd nvarchar(100)=NULL,----产地
@blockname nvarchar(50)=NULL,
@keyword varchar(5000)=NULL,
@Material nvarchar(50) = NULL,
@Length nvarchar(50)=NULL,
@Width nvarchar(50)=NULL,
@Height nvarchar(50)=NULL,
@blockid int =0
--WITH ENCRYPTION
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
if ( @PageSize <=0 )
set @PageSize = 1
if ( @PageIndex <=0 )
set @PageIndex = 1
--生成SQL语句
DECLARE @SQL varchar(8000)
DECLARE @SQL_1 varchar(8000)
DECLARE @WhereSQL varchar(8000)
DECLARE @strblockname varchar(8000)
DECLARE @Num int
SET @strblockname=''
SET @WhereSQL = ''
SET @Num = @PageSize * (@PageIndex - 1) if (@City<>'' and @City IS NOT NULL)----交货地
set @WhereSQL = @WhereSQL + ' and jhd like ''%'+ltrim(rtrim(@City))+'%'''
if (@cd<>'' and @cd is not null)----产地
set @WhereSQL = @WhereSQL + ' and cd like ''%'+ltrim(rtrim(@cd))+'%'''
if (@Material<>'' and @Material is not null)----材质
set @WhereSQL = @WhereSQL + ' and cz like ''%'+ltrim(rtrim(@Material))+'%'''
if (@Length<>'' and @Length is not null)----长度
set @WhereSQL = @WhereSQL + ' and length = '''+ltrim(rtrim(@Length))+''''
if (@Width<>'' and @Width is not null)----宽度
set @WhereSQL = @WhereSQL + ' and width = '''+ltrim(rtrim(@Width))+''''
if (@Height<>'' and @Height is not null)----厚度
set @WhereSQL = @WhereSQL + ' and height = '''+ltrim(rtrim(@Height))+''''
if (@blockname <> '' and (@blockname is not null))----搜索关键字
set @strblockname = ' and title like ''%'+ltrim(rtrim(@blockname))+'%'''
if (@keyword <> '' and (@keyword is not null))----搜索关键字
set @strblockname = ' and title like ''%'+ltrim(rtrim(@keyword))+'%'''
if ( @blockid <> 0 )
set @WhereSQL = @WhereSQL + ' and blockid = '+ convert(varchar(50),@blockid)
--获取记录总数
DECLARE @SQLcount nvarchar(4000)
--set @SQL ='select top '+cast(@PageSize as varchar(80))+' News.id,News.userid,News.title,U.vip_class,U.last_update_time,News.blockid,News.count,B_s.spec_ico,News.cd,News.ck,News.cz,News.jhd,News.length,News.width,News.height,News.price,News.simage,News.bimage,News.createdate,U.company_name,U.userinfo,U.operation,U.web_url,U.logo,P.product_list from dv_user U join info_list News on U.userid=News.userid join (select distinct(dbo.f_union(i.userid)) as product_list,i.userid from info_list i where info_type=1 and supply_type=0 '+ @strblockname +' group by userid) P on P.userid=U.userid join block_spec B_s on B_s.id=News.blockid where News.id in(select max(id) id from info_list where info_type=1 and supply_type=0 and userid<>0 '+ @strblockname +' group by userid) '
set @SQL ='select top '+cast(@PageSize as varchar(80))+' News.id,News.userid,News.title,U.vip_class,U.last_update_time,u.block_info_text as product_list,News.blockid,News.count,B_s.spec_ico,News.cd,News.ck,News.cz,News.jhd,News.length,News.width,News.height,News.price,News.simage,News.bimage,News.createdate,U.company_name,U.userinfo,U.operation,U.web_url,U.logo from dv_user U join info_list News on U.userid=News.userid join block_spec B_s on B_s.id=News.blockid where News.id in (select max(id) id from info_list where info_type=1 and supply_type=0 and userid<>0 '+ @strblockname +' group by userid) '
set @SQL_1 = 'select TOP '+cast(@Num as varchar(80))+' News.id from dv_user U join info_list News on U.userid=News.userid join block_spec B_s on B_s.id=News.blockid where News.id in (select max(id) id from info_list where info_type=1 and supply_type=0 and userid<>0 '+ @strblockname +' group by userid) '
set @SQLcount = N'select @rowscount=count(News.id) from dv_user U join info_list News on U.userid=News.userid join block_spec B_s on B_s.id=News.blockid where News.id in (select max(id) id from info_list where info_type=1 and supply_type=0 and userid<>0 '+ @strblockname +' group by userid) '
set @SQLcount = @SQLcount + @WhereSQL
--print @SQLcount
exec sp_executesql @SQLcount,N'@rowscount int OUTPUT',@rowscount OUTPUT
--根据页码和每页记录数合成sql语句 set @SQL = @SQL + @WhereSQL
if 1 < @PageIndex
BEGIN
set @SQL = @SQL + ' and News.id NOT IN (' + @SQL_1 + @WhereSQL + ' order by ' + @OrderField +')'
END
set @SQL = @SQL + ' order by ' + @OrderField
exec (@SQL) --return (0)
END
解决方案 »
- 如何得到SQL 语句执行的生效记录数?
- 关于sql server 2005 集成sp2的问题?有集成过的兄弟进来看看!
- 急!如何更新表,从一个表中获得数据更新另一个表,在线等
- 为什么我创建存储过程时提醒不能在不能在sysdepends创建对象
- 为什么sqlserver 批量插入多条记录只有一条记录插入成功
- 关于SQLServer中几个操作疑问?
- update的问题请帮忙!
- 请教高手:如果用Sql取第10-20条数据?
- 日志文件丢失,按论坛上的办法恢复出错!
- linq to sql 查询时加载出外键表数据
- 如何把100多个excel文件导入到sql server2005中去!!!!!
- 统计每张表记录数的问题
看看动态SQL基本语法就知道了
if (isnull(@cd,'')<>'')----产地