读书人

请教大家关于pl/sql存储过程的有关问题

发布时间: 2013-01-11 11:57:35 作者: rapoo

请问大家关于pl/sql存储过程的问题?

<?xml version="1.0" encoding="UTF-8"?>
<application id="SP" portal="CWC">
<data-access>
<procedure name="crosopen">
<data-source>crdcrd</data-source>
<statement><![CDATA[ call crd_app.crd_extended_search.crd_open_orders(?,?,?,?,?,?)]]></statement>
上面的crd_app.crd_extended_search.crd_status 三个分别代表数据库,表明,存储过程名对吗?
<parameter-list number="6">
<param>
<type>in</type>
<position>1</position>
<data-type>varchar</data-type>
<name>custId</name>
</param>
<param>
<type>in</type>
<position>2</position>
<data-type>varchar</data-type>
<name>startDate</name>
</param>
<param>
<type>in</type>
<position>3</position>
<data-type>varchar</data-type>
<name>endDate</name>
</param>
<param>
<type>in</type>
<position>4</position>
<data-type>varchar</data-type>
<name>loc</name>
</param>
<param>
<type>in</type>
<position>5</position>
<data-type>varchar</data-type>
<name>rowCount</name>
</param>
<param>
<type>out</type>
<position>6</position>
<data-type>cursor</data-type>
</param>
</parameter-list>
</procedure>
</data-access>
</application>
这段是项目中存储过程的xml
这里面的in和out分别代表的什么意思啊??
好像这里很关键,高手细讲啊~~


PROCEDURE crd_open_orders(
p_cust_id IN CRD_CUST_BILL_TO.GEAE_CUST_NUMBER%TYPE,
p_start_date IN VARCHAR2,
p_end_date IN VARCHAR2,
p_loc IN VARCHAR2,
p_rownum IN VARCHAR2,
p_crd_open_orders OUT result_cursor) IS
BEGIN
IF(p_loc = 'ALL') THEN
OPEN p_crd_open_orders FOR
SELECT *
FROM
(
SELECT /*+ ORDERED */ DISTINCT
pox.Cust_Po_Number , --1
pox.Cust_Po_Li_Num, --2
pox.location_id, --3
col.Co_Number , --4
col.Co_Li_Num , --5


SUBSTR(col.Part_Number,1,10) PART , --6
col.Eng_Mdl_Number , --7
emd.ENG_MDL_DESC , --8
col.Cmpnt_Cd, --9
cc.Cmpnt_Desc , --10
col.REF_ID , --11
NVL(col.CREATE_DATE,TO_DATE('01/01/1900','DD/MM/YYYY')),
--TO_CHAR(col.CREATE_DATE, 'DD-MON-YYYY') , --12
col.PART_QTY , --13
so.Intell_So_Number , --14
so.BAL_DUE_QTY , --15
decode(substr(to_char(clr.schd_dlvry_date , 'mm/dd/yyyy'), 7 ,4) ,
'2100' , 'ON HOLD' ,
'2222' , 'ON HOLD' ,
'3100' , 'ON HOLD' ,
'3200' , 'ON HOLD' ,
'3333' , 'ON HOLD' ,
'3400' , 'ON HOLD' ,
'4000' , 'ON HOLD' ,
'4100' , 'ON HOLD' ,
'4200' , 'ON HOLD' ,
'4300' , 'ON HOLD' ,
'4444' , 'ON HOLD' ,
to_char(clr.schd_dlvry_date , 'DD MON YYYY'))
Scheduled_date, --16
nvl(to_char(clr.rlse_qty), ' ') Scheduled_Qty, --17
col.CREATE_DATE, --18


--to_date(col.create_date ), --19
decode(substr(to_char(clr.schd_dlvry_date , 'mm/dd/yyyy'), 7 ,4) ,
'2100' , 'Staged for Kitting' ,
'2222' , 'GE Quote Process' ,
'3100' , 'Departure Record ApprovalD' ,
'3200' , 'Workscope Clarification (Customer)' ,
'3333' , 'Customer Quote Approval' ,
'3400' , 'Military Hardware in Property Crib' ,
'4000' , 'On Hold (other)' ,
'4100' , 'Credit Hold' ,
'4200' , 'Departure Record Approval' ,
'4300' , 'Salvation Review' ,
'4444' , 'Repair Development' ,
' ' ) Reasondescr, --20
cbt.GEAE_CUST_NUMBER --21
FROM
--crd_cust cus,
crd_cust_bill_to cbt,
crd_so so,
crd_co_li col,
crd_co_li_rlse_schd clr,
crd_po_li_ordcmpnt_xref pox,
crd_eng_mdl emd,


crd_cmpnt_code cc
WHERE
cbt.siebel_uri = p_cust_id
--AND cbt.cust_id_num = cus.cust_id_num
--AND cbt.location_id = cus.location_id
AND so.bill_to_seq_num = cbt.bill_to_seq_num
AND so.cust_id_num = cbt.cust_id_num
AND so.location_id = cbt.location_id
AND col.co_number = so.asm_co_number
AND col.co_li_num = so.asm_co_li_num
AND col.amdmt_num = so.asm_co_amdmt_num
AND col.location_id = so.location_id
AND clr.co_number (+)= col.co_number
AND clr.co_li_num (+)= col.co_li_num
AND clr.amdmt_num (+)= col.amdmt_num
AND clr.location_id (+)= col.location_id
AND pox.ord_cmpnt_id = col.ref_id
AND pox.ord_cmpnt_amdmt_num = col.amdmt_num
AND pox.location_id = col.location_id
AND emd.eng_mdl_number = col.eng_mdl_number
AND cc.cmpnt_cd (+)= col.cmpnt_cd
AND cc.eng_mdl_number (+)= col.eng_mdl_number
AND cc.location_id (+)= col.location_id
AND cc.cmpnt_cls_cd (+)= 'M'
AND cc.org_id_num (+)= col.org_id_num--12
AND pox.Cust_Po_Number <> ' '


AND pox.Cust_Po_Li_Num > 0
AND pox.ord_cmpnt_cd = 'L'
AND pox.Po_Li_Ord_Cmpnt_Xref_Sts_Cd || '' = 'A'
AND clr.Rlse_Sts_Cd_Num (+)= 5
AND col.create_date >= p_start_date
AND col.create_date <= p_end_date
AND so.bal_due_qty > 0
--AND so.so_sts_cd <> 65
AND so.Amdmt_Sts_Cd (+)= 'A'
)
WHERE
ROWNUM <= p_rownum;
WHERE
ROWNUM <= p_rownum;
END IF;
//这里代表的是一段存储过程


我想问的是,这两段代码,一个是xml,一个是oracle里面的存储过程,这两个结合起来怎么看呢?第一次接触,这个项目还是用的连接池把好几个数据流连接起来的。
在我们java的dao里面还是要执行以下xml中的方法的


java代码中怎么执行上面的存储方法,有一个excute方法好像。






[解决办法]
不是的,应该是包名,就像java中一样的。
[解决办法]
应该是用java代码解析xml,获取对应的存储过程和参数之后,放入运行系统的数据库操作。
有点动态配置的感觉。

[解决办法]
应该是in和out分别代表入参和出参,<position>是第几个参数,<data-type>参数类型,五个入参一个出参,crd_app.crd_extended_search.crd_open_orders应该是数据库名.包名.方法名
[解决办法]
引用:
应该是in和out分别代表入参和出参,<position>是第几个参数,<data-type>参数类型,五个入参一个出参,crd_app.crd_extended_search.crd_open_orders应该是数据库名.包名.方法名


正解~~~~

读书人网 >Java Web开发

热点推荐