procedure GetConStateAndType(state in varchar,
strWhere in varchar,
userids in NVARCHAR2,
cur_HJ_PRODUCTLIST OUT SYS_BASE.BASECURSOR,
cur_HJ_CONTRACTSTATE OUT SYS_BASE.BASECURSOR
)
as
v_sql varchar(2000);
p_sql varchar(2000);
con_sql varchar(2000);
begin --组合工程查询条件
v_sql:='SELECT CS_ID,CS_CONTRACTID,CS_PRJNAME,CS_PRJID,CON_AREA,CS_MONEY,CS_BROAD,CS_DOOR,CS_UNIT,
CS_TRANSPORT,CS_DELIVERYDATE,CS_CERTIFICATE,
CS_DSSTATE,CS_DSPRJDATE,CS_DSCPYDATE,CS_PDCSTATE,CS_PDCPRJDATE,CS_PDCCPYDATE,CS_DLVSTATE,CS_DLVDATE,
CS_SENDADDRESS,CS_BALANCETYPE,CS_MARK,CS_RECEIVEUNIT,CS_DELIVERYPERSON,CS_TELEPHONE,CS_LUPPERSON,CS_LUPDATE,CON_CONTRACTID,CON_STATUE,CS_DSINSTR
,hbm_GetHJLog(CS_ID,2) as Log,CS_DSLOG FROM HJ_CONTRACTSTATE left join hj_contract on CS_CONTRACTID=CON_ID
where 1=1 '||strWhere ||' order by CS_DELIVERYDATE';
--检索工程关联清册
if(state = '设计阶段') then
p_sql := ' SELECT CS_ID,CS_PDCPRJDATE,CS_PDCSTATE,CS_DELIVERYDATE,CS_CERTIFICATE,PL_PROJECTID,PL_ID,PL_PLTID,PJ_NAME,PL_PROJCODE,PL_CODE,PL_NAME,PL_OWNER,GetUserFullName(PL_OWNER) as PL_OWNERFULLNAME,PL_STATUS,PL_JHSJWCRQ,PL_EFFECTTIME,PL_XXTYPE,PL_ZHENGSHU,PL_JHBBBX,PL_JHBBSK,PL_JHTHBX,PL_JHTHSK,PL_JHBCMJ,PL_JHMSSK,PL_JHMKSK,
PL_JHMSSL,PL_JHDYDMSK,PL_JHDYMSSK,PL_JHDYMKSK,PL_JHDYBBSK,PL_JHDYTHSK,PL_JHDYXH,PL_JHDYTS,PL_NOTE,PL_SJRZ,PL_GYSTATUS,PL_SCSTATUS,PL_ZJSTATUS,PL_FYSTATUS,PLT_PLTNAME,PL_CREATETIME,PL_ECOUSER,PL_ECODATE,PL_GGTIMES,LT_PTID,getuserfullname(pl_aduser) as pl_aduserfullname,getuserfullname(pl_jduser) as pl_jduserfullname FROM
HBM_VIEW_SJJD_YH T WHERE 1=1';
if(userids is null) then
p_sql := p_sql||strWhere||' order by PL_PROJECTID,PL_PROJCODE,PL_PLTID';
open cur_HJ_CONTRACTSTATE for
v_sql;
open cur_HJ_PRODUCTLIST FOR
p_sql;
else--设计者不为空时,先检索清册再检索工程
p_sql :=p_sql||userids||' order by PL_PROJECTID,PL_PROJCODE,PL_PLTID';
open cur_HJ_PRODUCTLIST FOR
p_sql;
con_sql := 'SELECT distinct(CS_ID),CS_CONTRACTID,CS_PRJNAME,CS_PRJID,CON_AREA,CS_MONEY,CS_BROAD,CS_DOOR,CS_UNIT,CS_TRANSPORT,CS_DELIVERYDATE,CS_CERTIFICATE,
CS_DSSTATE,CS_DSPRJDATE,CS_DSCPYDATE,CS_PDCSTATE,CS_PDCPRJDATE,CS_PDCCPYDATE,CS_DLVSTATE,CS_DLVDATE,
CS_SENDADDRESS,CS_BALANCETYPE,CS_MARK,CS_RECEIVEUNIT,CS_DELIVERYPERSON,CS_TELEPHONE,CS_LUPPERSON,CS_LUPDATE,CON_CONTRACTID,CON_STATUE,CS_DSINSTR
,hbm_GetHJLog(CS_ID,2) as Log,CS_DSLOG FROM HJ_CONTRACTSTATE ,hj_contract,hj_plconrel,hj_productlist where CS_CONTRACTID=CON_ID and cs_id = pc_csid
and pl_id = pc_plid '||strWhere ||userids||' order by CS_DELIVERYDATE';
open cur_HJ_CONTRACTSTATE FOR
con_sql;
end if;
ELSE
open cur_HJ_CONTRACTSTATE for
v_sql;
if(state = '生产滚动计划') then
p_sql := 'SELECT CS_ID, CS_PDCPRJDATE,CS_PDCSTATE,CS_DELIVERYDATE,CS_CERTIFICATE,PL_ID,PL_PLTID,PL_PROJCODE,PJ_NAME,PL_NAME,PL_SJBCMJ,PL_SJMSS,PL_SJDYTS,PL_SCSTATUS,PL_SCJHWGRQ,PL_SCYOUXIANJI,PL_SCQIDONGRQ,PL_BCSK,PL_MSSK,PL_MKSK,PL_TSSL,
PL_TSJD,PL_PROCESSUSERID,GetUserFullName(PL_PROCESSUSERID) as PL_PROCESSUSERIDFULLNAME,PL_GYSTATUS,PL_PCEFFECTTIME,PL_GYREMARK,PL_SCREMRAK,PL_SCWGREMARK,PL_SCWCRQ,PL_QCJSERROR,PL_QCGYERROR,PL_JYFKINFO,PLT_PLTNAME,PL_CODE,PL_OWNER,GetUserFullName(PL_OWNER) as PL_OWNERFULLNAME,
PL_STATUS,PL_EFFECTTIME,PL_NOTE,PL_SCTIAOZHENGREN,GetUserFullName(PL_SCTIAOZHENGREN) as PL_SCTIAOZHENGRENFULLNAME, PL_SCTZRQ,PL_CGDWQK,PL_ECOUSER ,COLOR,LT_PTID,PB_BANXING,tuhao,PL_GGTIMES,LT_PTID FROM HBM_VIEW_SCGDJH_YH where 1=1'||strWhere||'ORDER BY PL_SCJHWGRQ,PL_SCYOUXIANJI,PL_PROJCODE,PL_NAME';
elsif state = '板材生产车间进度' then
p_sql:= ' SELECT CS_ID, CS_PDCPRJDATE,CS_PDCSTATE,CS_DELIVERYDATE,CS_CERTIFICATE,PL_ID,PL_PLTID,PL_PROJCODE,PJ_NAME,PL_NAME,PL_SCSTATUS,PB_BANXING,PL_SJBCMJ,PL_DANWEI,PL_SCJHWGRQ,PL_SCYOUXIANJI,PL_TSSL,PL_TSJD,PL_BCSK,PB_GCDWQK,PB_XLSTATUS,PB_XLJHWCRQ,PB_XLSJWCRQ,PB_CCSTATUS,PB_CCJHWCRQ,PB_CCSJWCRQ,PB_ZWSTATUS,PB_ZWJHWCRQ,PB_ZWSJWCRQ,PB_GYSTATUS,PB_GYJHWCRQ,PB_GYSJWCRQ,PB_FHSTATUS,PB_FHJHWCRQ,PB_FHSJWCRQ,PB_DBSTATUS,PB_DBJHWCRQ,PB_DBSJWCRQ,PB_CJREMARK,PLT_PLTNAME,PL_CODE,PL_OWNER,GetUserFullName(PL_OWNER) as PL_OWNERFULLNAME,PL_NOTE,PL_PROCESSUSERID, GetUserFullName(PL_PROCESSUSERID) as PL_PROCESSUSERIDFULLNAME,PL_GYREMARK,
PL_SCQIDONGRQ,PB_CJNAME,PL_ECOUSER ,COLOR ,PL_GGTIMES,LT_PTID FROM HBM_VIEW_BCCJJD_YH T1 where 1=1'||strWhere||'ORDER BY PL_SCJHWGRQ,PL_SCYOUXIANJI,PL_PROJCODE,PL_NAME';
elsif state = '防火门生产车间进度'then
p_sql := 'SELECT CS_ID, CS_PDCPRJDATE,CS_PDCSTATE,CS_DELIVERYDATE,CS_CERTIFICATE,PL_ID,PL_PLTID,PL_PROJCODE,PJ_NAME,PL_NAME,PL_SCSTATUS,PL_SJMSS,PL_DANWEI,PL_SCJHWGRQ,PL_SCYOUXIANJI,PF_MKBLINFO,PF_MKBLJHRQ,PF_MKBLSJRQ,PF_MSBLINFO,PF_MSBLJHRQ,PF_MSBLSJRQ,PF_MKHJJD,PF_MKHJJHRQ,PF_MKHJSJRQ,PF_NKCHJJD,PF_NKCHJJHRQ,PF_NKCHJSJRQ,PF_MKYQJD,PF_MKYQJHRQ,PF_MKYQSJRQ,PF_MSYQJD,PF_MSYQJHRQ,PF_MSYQSJRQ,PF_MSFHJD,PF_MSFHJHRQ,PF_MSFHSJRQ,PF_ZSJD,PF_ZSJHRQ,PF_ZSSJRQ,PF_MKZPJD,PF_MKZPJHRQ,PF_MKZPSJRQ,PF_MSZPJD,PF_MSZPJHRQ,PF_MSZPSJRQ,PF_DBJD,PF_DBJHRQ,PF_DBSJRQ,PF_CJREMARK,PLT_PLTNAME,PL_CODE,PL_OWNER,GetUserFullName(PL_OWNER) as PL_OWNERFULLNAME,PL_NOTE,
PL_PROCESSUSERID,GetUserFullName(PL_PROCESSUSERID) as PL_PROCESSUSERIDFULLNAME,PL_GYREMARK,PL_SCQIDONGRQ,PL_TSSL,PL_TSJD,PF_CJNAME,PL_ECOUSER,COLOR,tuhao,PL_GGTIMES FROM HBM_VIEW_FHMCJJD_YH where 1=1'||strWhere||'ORDER BY PL_SCJHWGRQ,PL_SCYOUXIANJI,PL_PROJCODE,PL_NAME';
elsif state = '单元生产车间进度' then
p_sql:='SELECT CS_ID, CS_PDCPRJDATE,CS_PDCSTATE,CS_DELIVERYDATE,CS_CERTIFICATE,PL_ID,PL_PLTID,PL_PROJCODE,PJ_NAME,PL_NAME,PL_SCSTATUS,PL_SJDYTS,PL_DANWEI,PL_SCJHWGRQ,PL_SCYOUXIANJI,PD_DPBLJD,PD_DPBLJHRQ,PD_DPBLSJRQ,PD_DPHJJD,PD_DPHJJHRQ,PD_DPHJSJRQ,PD_DPYQJD,PD_DPYQJHRQ,PD_DPYQSJRQ,PD_CPDWJD,PD_CPJHRQ,PD_CPSJRQ,PD_WBDYJD,PD_WBDYJHRQ,PD_WBDYSJRQ,PD_GXAZJD,PD_GXAZJHRQ,PD_GXAZSJRQ,PD_WJJAZJD,PD_WJJAZJHRQ,PD_WJJAZSJRQ,PD_QXDBJD,PD_QXDBJHRQ,PD_QXDBSJRQ,PD_BCDWJD,PD_BCDWJHRQ,PD_BCDWSJRQ,PD_MDWJD,PD_MDWJHRQ,PD_MDWSJRQ,PD_DLDWJD,
PD_DLDWJHRQ,PD_DLDWSJRQ,PD_CJREMARK,PD_JXMDWJD,PD_JXMDWJHRQ,PD_JXMDWSJRQ,PLT_PLTNAME,PL_CODE,PL_OWNER,GetUserFullName(PL_OWNER) as PL_OWNERFULLNAME,PL_NOTE,PL_PROCESSUSERID,GetUserFullName(PL_PROCESSUSERID) as PL_PROCESSUSERIDFULLNAME,
PL_GYREMARK,PL_SCQIDONGRQ,PL_TSSL,PL_TSJD,PD_CJNAME,PL_ECOUSER,COLOR,PL_GGTIMES FROM HBM_VIEW_DYCJJD_YH where 1=1'||strWhere||'ORDER BY PL_SCJHWGRQ,PL_SCYOUXIANJI,PL_PROJCODE,PL_NAME';
end if;
OPEN cur_HJ_PRODUCTLIST FOR
p_sql;
open cur_HJ_PRODUCTLIST FOR
p_sql;
end if; end GetConStateAndType; 现在自己负责的一个项目,我改一个bug,跟到这个存储过程里面了,目前只希望尽快把这个存储过程弄懂。
由于oracle存储过程没有学过,但是又要尽快了解,所以就来这里问高手了。 就我目前的理解,这个存储先传进来3个参数,然后返回2个游标。
这个存储过程最后貌似可以查到2个表中的数据,你们只用把个存储过程的每一行说清楚就行了,越详细越好,谢了。
解决方案 »
- literal does not match format string 报错 坐等大牛
- oracle 存储过程 传出参数是cursor 没有open 异常处理
- ORCLE 语句这句话该怎么写
- oracle 判断星期日 ???
- 急求高手相救!!!一台电脑上可以部署多个数据库服务系统吗?
- 怎么给view 增加列
- 一个部门销售统计报表辅助表的设计!
- 《Oracle9i&10g编程艺术》《Oracle RAC 日记》等,资源共享啊
- 多少分可以是专家?
- oracle的SQL中有没有象ACCESS中的IIF那样的函数
- 求完整的Oracle数据库连接过程
- OracleDBConsoleorcl服务无法启动
and if(userids is null)
把p_sql 的查询结果放到cur_HJ_PRODUCTLIST ,v_sql的结果放到游标cur_HJ_CONTRACTSTATE
else
把p_sql 的查询结果放到cur_HJ_PRODUCTLIST ,con_sql的结果放到游标cur_HJ_CONTRACTSTATE
else
把v_sql的查询结果放到cur_HJ_CONTRACTSTATE
if(state = '生产滚动计划')后后续的流程控制都是在拼 p_sql
把p_sql的查询结果放到cur_HJ_PRODUCTLIST 里
返回
cur_HJ_PRODUCTLIST和cur_HJ_CONTRACTSTATE