类型:转载 责任编辑:asp.net 日期:2007/05/23
热门软件下载:
rop procedure proandproxy_search
create procedure proandproxy_search
@year varchar(20)=NULL, --工程年度输入参数
@proname varchar(200)=NULL,--工程的名称输入参数
@proxycom varchar(40)=NULL,--委托单位输入参数
@proprofession varchar(20)=NULL, --工程专业输入参数
@proid varchar(50) output,--工程编号
@proprofession_out varchar(20) output, --工程专业输出参数
@year_out varchar(20) output,--工程年度输出参数
@proname_out varchar(200) output,--工程的名称输出参数
@proinvest numeric(12,2)output, --工程总投资
@projlcost numeric(12,2) output,--工程监理费
@designcom varchar(40) output, --设计单位
@constructcom varchar(40) output, --施工单位
@proxycom_out varchar(40) output,--委托单位
@starttime varchar(20) output, --开始工期
@stoptime varchar(20) output,--结束工期
@proxysort varchar(40) output ,--委托书类别
@transtime varchar(20) output, --移交日期
@signtime varchar(20) output --签定日期
as
if
@year!=null and @proname=NULL AND @proxycom=NULL AND @proprofession=NULL
begin
select @proid =ProjectTable.工程编号,@proprofession_out=工程专业,@proname_out=工程项目名称,@year_out=工程年度,
@proinvest=工程总投资,@projlcost=工程监理费,@designcom=设计单位名称,@proxycom_out=委托单位名称,
@constructcom=施工单位名称,@starttime=计划开始工期,@stoptime=计划结束工期,@proxysort=委托书类别名称,
@transtime=资料移交日期,@signtime=资料签定日期
from ProjectTable,DesignCompanyTable,ProxyCompanyTable,ProxySortTable,ProxyTable
where ProjectTable.工程年度= @year and DesignCompanyTable.设计单位编号=ProjectTable.设计单位编号 and
ProxyCompanyTable.委托单位编号=ProjectTable.委托单位编号 and ProjectTable.工程编号=ProxyTable.工程编号
and ProxyTable.委托书类别编号=ProxySortTable.委托书类别编号
end
else if
@year=null and @proname!=NULL AND @proxycom=NULL AND @proprofession=NULL
begin
select @proid =ProjectTable.工程编号,@proprofession_out=工程专业,@proname_out=工程项目名称,@year_out=工程年度,
@proinvest=工程总投资,@projlcost=工程监理费,@designcom=设计单位名称,@proxycom_out=委托单位名称,
@constructcom=施工单位名称,@starttime=计划开始工期,@stoptime=计划结束工期,@proxysort=委托书类别名称,
@transtime=资料移交日期,@signtime=资料签定日期
from ProjectTable,DesignCompanyTable,ProxyCompanyTable,ProxySortTable,ProxyTable
where ProjectTable.工程项目名称= @proname and DesignCompanyTable.设计单位编号=ProjectTable.设计单位编号 and
ProxyCompanyTable.委托单位编号=ProjectTable.委托单位编号 and ProjectTable.工程编号=ProxyTable.工程编号
and ProxyTable.委托书类别编号=ProxySortTable.委托书类别编号
end
else if
@year=null and @proname=NULL AND @proxycom!=NULL AND @proprofession=NULL
begin
declare
@proxycomID int
select @proxycomID=委托单位编号 from ProxyCompanyTable where 委托单位名称=@proxycom
select @proid =ProjectTable.工程编号,@proprofession_out=工程专业,@proname_out=工程项目名称,@year_out=工程年度,
@proinvest=工程总投资,@projlcost=工程监理费,@designcom=设计单位名称,@proxycom_out=ProxyCompanyTable.委托单位名称,
@constructcom=施工单位名称,@starttime=计划开始工期,@stoptime=计划结束工期,@proxysort=委托书类别名称,
@transtime=资料移交日期,@signtime=资料签定日期
from ProjectTable,DesignCompanyTable,ProxyCompanyTable,ProxySortTable,ProxyTable
where ProjectTable.委托单位编号= @proxycomID and DesignCompanyTable.设计单位编号=ProjectTable.设计单位编号 and
ProxyCompanyTable.委托单位编号=ProjectTable.委托单位编号 and ProjectTable.工程编号=ProxyTable.工程编号
and ProxyTable.委托书类别编号=ProxySortTable.委托书类别编号
end
else if
@year=null and @proname=NULL AND @proxycom=NULL AND @proprofession!=NULL
begin
select @proid =ProjectTable.工程编号,@proprofession_out=工程专业,@proname_out=工程项目名称,@year_out=工程年度,
@proinvest=工程总投资,@projlcost=工程监理费,@designcom=设计单位名称,@proxycom_out=委托单位名称,
@constructcom=施工单位名称,@starttime=计划开始工期,@stoptime=计划结束工期,@proxysort=委托书类别名称,
@transtime=资料移交日期,@signtime=资料签定日期
from ProjectTable,DesignCompanyTable,ProxyCompanyTable,ProxySortTable,ProxyTable
where ProjectTable.工程专业= @proprofession and DesignCompanyTable.设计单位编号=ProjectTable.设计单位编号 and
ProxyCompanyTable.委托单位编号=ProjectTable.委托单位编号 and ProjectTable.工程编号=ProxyTable.工程编号
and ProxyTable.委托书类别编号=ProxySortTable.委托书类别编号
end
else if
@year!=null and @proname=NULL AND @proxycom!=NULL AND @proprofession=NULL
begin
declare
@search_proxycomID int
select @search_proxycomID=委托单位编号 from ProxyCompanyTable where 委托单位名称=@proxycom
select @proid =ProjectTable.工程编号,@proprofession_out=工程专业,@proname_out=工程项目名称,@year_out=工程年度,
@proinvest=工程总投资,@projlcost=工程监理费,@designcom=设计单位名称,@proxycom_out=委托单位名称,
@constructcom=施工单位名称,@starttime=计划开始工期,@stoptime=计划结束工期,@proxysort=委托书类别名称,
@transtime=资料移交日期,@signtime=资料签定日期
from ProjectTable,DesignCompanyTable,ProxyCompanyTable,ProxySortTable,ProxyTable
where ProjectTable.工程年度=@year and ProjectTable.工程项目名称= @proname and DesignCompanyTable.设计单位编号=ProjectTable.设计单位编号 and
ProxyCompanyTable.委托单位编号=ProjectTable.委托单位编号 and ProjectTable.工程编号=ProxyTable.工程编号
and ProxyTable.委托书类别编号=ProxySortTable.委托书类别编号
end
else if
@year!=null and @proname=NULL AND @proxycom=NULL AND @proprofession!=NULL
begin
select @proid =ProjectTable.工程编号,@proprofession_out=工程专业,@proname_out=工程项目名称,@year_out=工程年度,
@proinvest=工程总投资,@projlcost=工程监理费,@designcom=设计单位名称,@proxycom_out=委托单位名称,
@constructcom=施工单位名称,@starttime=计划开始工期,@stoptime=计划结束工期,@proxysort=委托书类别名称,
@transtime=资料移交日期,@signtime=资料签定日期
from ProjectTable,DesignCompanyTable,ProxyCompanyTable,ProxySortTable,ProxyTable
where ProjectTable.工程年度= @year and ProjectTable.工程专业= @proprofession and DesignCompanyTable.设计单位编号=ProjectTable.设计单位编号 and
ProxyCompanyTable.委托单位编号=ProjectTable.委托单位编号 and ProjectTable.工程编号=ProxyTable.工程编号
and ProxyTable.委托书类别编号=ProxySortTable.委托书类别编号
end
else
begin
insert into ProLogTable(说明) values (请您按着帮助操作进行查询,否则查询将会出错)
end
-----------------------------------------
有四个查询条件:
@year varchar(20)=NULL, --工程年度输入参数
@proname varchar(200)=NULL,--工程的名称输入参数
@proxycom varchar(40)=NULL,--委托单位输入参数
@proprofession varchar(20)=NULL, --工程专业输入参数
别的都是输出参数:
@proid varchar(50) output,--工程编号
@proprofession_out varchar(20) output, --工程专业输出参数
@year_out varchar(20) output,--工程年度输出参数
@proname_out varchar(200) output,--工程的名称输出参数
@proinvest numeric(12,2)output, --工程总投资
@projlcost numeric(12,2) output,--工程监理费
@designcom varchar(40) output, --设计单位
@constructcom varchar(40) output, --施工单位
@proxycom_out varchar(40) output,--委托单位
@starttime varchar(20) output, --开始工期
@stoptime varchar(20) output,--结束工期
@proxysort varchar(40) output ,--委托书类别
@transtime varchar(20) output, --移交日期
@signtime varchar(20) output --签定日期
-----------------------------------------------------------
这样可以吗?谢谢!
网友回答:
这么多输出参数,用一个结果集代替不是更好吗!
declare @sql="select * from table where 1=1"
if(@year!=)
begin
select @sql=@sql+" and myear="+@year
end
......
exec @sql
存储过程的写法有问题啊,这么多的返回,当然要用结果集了,类似下面:
create procedure proandproxy_search
... --各个参数
as
... -- 你的处理
---最后返回结果集
Select (你需要返回的东西...) from (一个临时表,或者其他)
GO
其实你不应该写这么多,你只要写上3个就行啦,这样大家看的也清楚,余下的你就比照着写就得了
你写的太多啦,我看了就不知道你到底想要什么
提问题,言简意赅