set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
----------------1编写说明 start-----------------
--*名称:业务关系购货企业目录查询,设置业务关系
--备注:
--*编写人:付强
--*创建时间:2008-11-27
----------------2修改日志 end-----------------
--[QN_CORPORATION_LIST_STD] 1,'6,',''
ALTER proc [dbo].[QN_CORPORATION_LIST_STD]
@UserID int,
@Parastr varchar(1000) = '',
----------------- 2参数说明 start--------------------------
-- 如果@parastr = '' , 则不能检索数据
--企业检索码
----------------- 2参数说明 end--------------------------
@WebPara varchar(100) = ''
as
set nocount on
------------------3查询输出初始化 start --------------------
declare @rid int --关联企业
--3a.获取操作者的关联信息
select @rid = rid from person
where p_lsm = @userid
--3b.创建输出列表
create table #ts
( sortid int identity(1,1) --序号
, DataKey varchar(30) -- 企业ID
, corpcode varchar(100) --企业编码
, corpname varchar(200) --企业名称
, districtcode varchar(10) --行政区号
, corptype varchar(100) -- 企业类别
, address varchar(200) -- 企业地址
, link varchar(100) --联系方式
, spellcode varchar(50) -- 助记码
)
--3c 条件初判
if @rid is null
begin
select * from #ts
return
end
------------------3查询输出初始化 end --------------------
------------------4 查询条件参数拆解 start----------------
declare @outstr varchar(1000)
declare @gtype varchar(30)
declare @corpid int
declare @Ctype int
exec v6_popfirstword @parastr output, @outstr output
if isnumeric(@outstr) = 1
set @corpid = @outstr
else
set @corpid = 0
exec v6_popfirstword @parastr output, @outstr output
set @gtype = @outstr
------------------4 查询条件参数拆解 end----------------------
------------------5 数据获取 start----------------------
---5.a 基本查询构架
declare @sqlstr varchar(2000)
set @sqlstr = ' insert #ts (
DataKey
, corpcode
, corpname
, districtcode
, corptype
, address
, link
, spellcode
)
select
CORPID
,corpid
,CORPNAME
,DistrictCode
,CorpType
,Address
,link
,spellcode
from BDO_CORPORATION a where a.isvalid = 1
and not exists(select * from DPV_CORPCORPINFO where CorpID='+cast(@corpid AS VARCHAR)+' and
RelationCorp='+cast(@rid AS VARCHAR)+' and RelationCorp=a.corpid) '
-- 5.b 查询条件组合
--select * from #ts
declare @clause varchar(1000)
set @clause = ' and iscustom = 1'
--and isprovider = 1
if @gtype != ''
begin
if isnumeric(@gtype)=1
set @sqlstr = @sqlstr + ' and corpid='+str(@gtype)+' '
else
begin
set @ctype = dbo.PUB_GETCODETYPE(@gtype)
if @ctype = 3
set @sqlstr = @sqlstr + ' and corpname like ''%' + @gtype + '%'''
else
set @sqlstr = @sqlstr + ' and spellcode like ''%' + @gtype + '%'''
end
end
set @sqlstr = @sqlstr + @clause
---- 5.c 排序、分页拆解
declare @sortstr varchar(100)
declare @pagenum int
declare @pageno int
exec PUB_WEB_PAGEPARA @WebPara, @SortStr output, @PageNum output , @PageNo output
-- 5.d 排序处理
--注意:很多时候,排序字段与输出字段不一致,需要做变更处理
if @sortstr is null or @sortstr = ''
set @sqlstr = @sqlstr + ' order by DistrictCode '
else
begin
-- 对排序字段进行名称变更
set @sqlstr = @sqlstr + ' order by ' + @sortstr
end
-- 5.e 数据获取
print @sqlstr
exec (@sqlstr)
------------------5 数据获取 end----------------------
------------------6 分页输出 start----------------------
declare @count int
select @count = count(*) from #ts
if @pagenum is null or @count < @pagenum -- 行数少于每页行数
select @count as totalcount, * from #ts
else
select @count as totalcount, * from #ts
where sortid > (@pageno - 1) * @pagenum and sortid <= @pageno * @pagenum
------------------6 分页输出 start----------------------