orcle 存储过程返回值问题(取不到值)~~ 在Delphi中取不到~在orcle测试中能取到 ( 积分: 100 )

  • 主题发起人 主题发起人 狼崖山
  • 开始时间 开始时间

狼崖山

Unregistered / Unconfirmed
GUEST, unregistred user!
ret&nbsp;和&nbsp;retchar&nbsp;为输出参数~&nbsp;其他6个为输入参数<br>&nbsp;&nbsp;&nbsp;&nbsp;ADOStoredProc1.ProcedureName:='getplacepass';<br>&nbsp;&nbsp;&nbsp;&nbsp;ADOStoredProc1.Parameters.Refresh;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ADOStoredProc1.Parameters.ParamByName('sBegdate').Value:='20070810101010';<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ADOStoredProc1.Parameters.ParamByName('sEndDate').Value:='20070810111111';<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ADOStoredProc1.Parameters.ParamByName('sLong'&nbsp;&nbsp;&nbsp;).Value:='108.3279840';<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ADOStoredProc1.Parameters.ParamByName('sLat').Value:='22.8248000';<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ADOStoredProc1.Parameters.ParamByName('ilimit').Value:='25';<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ADOStoredProc1.Parameters.ParamByNam('sCompany').Value:='*';<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ADOStoredProc1.Prepared;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ADOStoredProc1.execproc;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ret:=&nbsp;ADOStoredProc1.Parameters.ParamByName('ret').Value;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;retchar:=&nbsp;ADOStoredProc1.Parameters.ParamByName('retchar').Value;<br>except<br>end;<br><br>附件上存储过程<br>create&nbsp;or&nbsp;replace&nbsp;procedure&nbsp;GetPlacePass<br>(sBegdate&nbsp;in&nbsp;varchar2,sEndDate&nbsp;in&nbsp;varchar2,sLong&nbsp;in&nbsp;varchar2,sLat&nbsp;in&nbsp;varchar2,<br>ilimit&nbsp;in&nbsp;number,sCompany&nbsp;in&nbsp;varchar2,&nbsp;ret&nbsp;in&nbsp;out&nbsp;number,retchar&nbsp;in&nbsp;out&nbsp;varchar2)<br>is<br>v_retchar&nbsp;varchar2(4000);<br>v_ret1&nbsp;&nbsp;&nbsp;&nbsp;varchar2(4000);<br>v_ret2&nbsp;&nbsp;&nbsp;&nbsp;varchar2(4000);<br>v_ret3&nbsp;&nbsp;&nbsp;&nbsp;varchar2(4000);<br>v_ret4&nbsp;&nbsp;&nbsp;&nbsp;varchar2(4000);<br>v_rettmp&nbsp;&nbsp;varchar2(4000);<br>&nbsp;&nbsp;&nbsp;&nbsp;CURSOR&nbsp;c<br>&nbsp;&nbsp;&nbsp;&nbsp;IS<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SELECT&nbsp;*<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FROM&nbsp;TABLE&nbsp;(CAST&nbsp;(fn_split&nbsp;(slong,&nbsp;';')&nbsp;AS&nbsp;ty_str_split<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);<br><br>&nbsp;&nbsp;&nbsp;&nbsp;r&nbsp;c%ROWTYPE;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;CURSOR&nbsp;d<br>&nbsp;&nbsp;&nbsp;&nbsp;IS<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SELECT&nbsp;*<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FROM&nbsp;TABLE&nbsp;(CAST&nbsp;(fn_split&nbsp;(slat,&nbsp;';')&nbsp;AS&nbsp;ty_str_split<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);<br><br>&nbsp;&nbsp;&nbsp;&nbsp;s&nbsp;c%ROWTYPE;&nbsp;<br><br>CURSOR&nbsp;e<br>&nbsp;&nbsp;&nbsp;&nbsp;IS<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SELECT&nbsp;*<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FROM&nbsp;TABLE&nbsp;(CAST&nbsp;(fn_split&nbsp;(v_retchar,&nbsp;'||')&nbsp;AS&nbsp;ty_str_split<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);<br><br>&nbsp;&nbsp;&nbsp;&nbsp;t&nbsp;e%ROWTYPE;<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;CURSOR&nbsp;a1<br>&nbsp;&nbsp;&nbsp;&nbsp;IS<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SELECT&nbsp;*<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FROM&nbsp;TABLE&nbsp;(CAST&nbsp;(fn_split&nbsp;(v_ret1,&nbsp;';')&nbsp;AS&nbsp;ty_str_split<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);<br><br>&nbsp;&nbsp;&nbsp;&nbsp;b1&nbsp;a1%ROWTYPE;<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;CURSOR&nbsp;a2<br>&nbsp;&nbsp;&nbsp;&nbsp;IS<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SELECT&nbsp;*<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FROM&nbsp;TABLE&nbsp;(CAST&nbsp;(fn_split&nbsp;(v_ret2,&nbsp;';')&nbsp;AS&nbsp;ty_str_split<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);<br><br>&nbsp;&nbsp;&nbsp;&nbsp;b2&nbsp;a2%ROWTYPE;<br>ilong&nbsp;number(28,20);<br>ilat&nbsp;number(28,20);<br>i&nbsp;&nbsp;&nbsp;&nbsp;number;<br>tmp_date1&nbsp;&nbsp;&nbsp;date;<br><br>begin<br>&nbsp;&nbsp;&nbsp;&nbsp;select&nbsp;''&nbsp;into&nbsp;&nbsp;v_rettmp&nbsp;from&nbsp;dual;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmp_date1:=sysdate;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OPEN&nbsp;c;<br>&nbsp;&nbsp;&nbsp;&nbsp;open&nbsp;d;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;LOOP<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FETCH&nbsp;c&nbsp;INTO&nbsp;r;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fetch&nbsp;d&nbsp;into&nbsp;s;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EXIT&nbsp;WHEN&nbsp;(c%NOTFOUND&nbsp;or&nbsp;d%notfound);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ilong:=to_number(r.column_value);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ilat:=to_number(s.column_value);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;v_retchar:=v_retchar&nbsp;||&nbsp;GetPlaceReTime(sBegdate,sEndDate,iLong,iLat,ilimit,sCompany)&nbsp;||&nbsp;'||';<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--DBMS_OUTPUT.put_line&nbsp;(r.column_value&nbsp;||&nbsp;'--'&nbsp;||&nbsp;s.column_value);<br>&nbsp;&nbsp;&nbsp;&nbsp;END&nbsp;LOOP;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;v_retchar:=substr(v_retchar,1,length(v_retchar)-2);<br>&nbsp;&nbsp;&nbsp;&nbsp;CLOSE&nbsp;c;<br>&nbsp;&nbsp;&nbsp;&nbsp;close&nbsp;d;<br>&nbsp;&nbsp;&nbsp;&nbsp;i:=1;<br>&nbsp;&nbsp;&nbsp;&nbsp;open&nbsp;e;<br>&nbsp;&nbsp;&nbsp;&nbsp;loop<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fetch&nbsp;e&nbsp;into&nbsp;t;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit&nbsp;when&nbsp;e%notfound;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;i=1&nbsp;then<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;v_ret1:=t.column_value;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;v_rettmp:=t.column_value;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;v_ret1:=v_rettmp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;v_ret2:=t.column_value;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;open&nbsp;a1;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;v_rettmp:='';<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;loop<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fetch&nbsp;a1&nbsp;into&nbsp;b1;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit&nbsp;when&nbsp;a1%notfound;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*v_rettmp:='';*/<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;open&nbsp;a2;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;loop<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fetch&nbsp;a2&nbsp;into&nbsp;b2;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit&nbsp;when&nbsp;a2%notfound;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;b1.column_value=b2.column_value&nbsp;then&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;v_rettmp:=v_rettmp&nbsp;||&nbsp;b1.column_value&nbsp;||&nbsp;';';&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end&nbsp;if;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end&nbsp;loop;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;close&nbsp;a2;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end&nbsp;loop;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;close&nbsp;a1;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end&nbsp;if;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i:=i+1;<br>&nbsp;&nbsp;&nbsp;&nbsp;end&nbsp;loop;<br>&nbsp;&nbsp;&nbsp;&nbsp;close&nbsp;e;<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;ret:=(sysdate-tmp_date1)*&nbsp;24&nbsp;*&nbsp;60&nbsp;*&nbsp;60;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;retchar:=v_rettmp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>end;<br>说明&nbsp;、:/*<br>取经过多个点的车辆<br>sBegdate&nbsp;20070810000000<br>sEndDate&nbsp;20070810000000<br>slong&nbsp;108.3279840;108.3279840;108.3279840;<br>slat&nbsp;22.8248000;22.8248000;22.8248000;<br>ilimit&nbsp;25M<br>sCompany&nbsp;对应company表的OID字段,全部公司传*<br>ret&nbsp;执行时间<br>retchar&nbsp;桂ATA776;桂ATA777;桂ATA778;桂ATA779<br>*/
 
PL/SQL不是有对存储过程进行测试的功能吗,测试下就知道了
 
我是这样写的..前台:<br>ADODataSet1.Close&nbsp;;<br>&nbsp;&nbsp;&nbsp;ADODataSet1.CommandType&nbsp;:=cmdUnknown&nbsp;&nbsp;;<br>&nbsp;&nbsp;&nbsp;ADODataSet1.Parameters.Clear;<br>&nbsp;&nbsp;&nbsp;ADODataSet1.CommandText&nbsp;:=&nbsp;'{call&nbsp;VCWIP_JOB_FND50ITEM_PKG.job_fnd50item(?,?)}'&nbsp;;<br>&nbsp;&nbsp;&nbsp;ADODataSet1.Parameters.CreateParameter('p1',ftString,pdInput&nbsp;,10,JobNo);<br>&nbsp;&nbsp;&nbsp;ADODataSet1.Parameters.CreateParameter('p2',ftFloat,pdinput,4,OptSeq);<br>&nbsp;&nbsp;&nbsp;ADODataSet1.Open;<br>[red]-------------------------oracle&nbsp;pak:[/red]<br>CREATE&nbsp;OR&nbsp;REPLACE&nbsp;PACKAGE&nbsp;VCWIP_JOB_FND50ITEM_PKG&nbsp;AS<br>/*<br>&nbsp;&nbsp;REM&nbsp;===============================================================<br>&nbsp;&nbsp;REM&nbsp;=&nbsp;&nbsp;&nbsp;&nbsp;Copyright&nbsp;(C)&nbsp;2004&nbsp;&nbsp;&lt;VTECH&gt;<br>&nbsp;&nbsp;REM&nbsp;=&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;LIAOBU,CHINA&gt;<br>&nbsp;&nbsp;REM&nbsp;=&nbsp;&nbsp;&nbsp;&nbsp;All&nbsp;rights&nbsp;reserved<br>&nbsp;&nbsp;REM&nbsp;===============================================================<br>&nbsp;&nbsp;REM<br>&nbsp;&nbsp;REM&nbsp; &nbsp;$Header&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;&nbsp;&nbsp;VCWIP_JOB_FND50ITEM_PKG.pls&nbsp;&nbsp;V&nbsp;2.4&nbsp;02-Jan-2007&nbsp;&nbsp;$<br>&nbsp;&nbsp;REM&nbsp;&nbsp;&nbsp;&nbsp;PROGRAM&nbsp;NAME:&nbsp;&nbsp;&nbsp;VCWIP_JOB_FND50ITEM_PKG<br>&nbsp;&nbsp;REM&nbsp;&nbsp;&nbsp;&nbsp;PROGRAMMER&nbsp;&nbsp;:&nbsp;&nbsp;&nbsp;SZ_CEN<br>&nbsp;&nbsp;REM&nbsp;&nbsp;&nbsp;&nbsp;DATE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;&nbsp;&nbsp;2009-09-17<br>&nbsp;&nbsp;REM&nbsp;&nbsp;&nbsp;&nbsp;PURPOSE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;&nbsp;&nbsp;for&nbsp;SMD&nbsp;outstanding&nbsp;Jobs&nbsp;<br>&nbsp;&nbsp;REM&nbsp;&nbsp;&nbsp;&nbsp;PARAMETERS&nbsp;&nbsp;:<br>&nbsp;&nbsp;REM&nbsp;&nbsp;&nbsp;&nbsp;CALLED&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:<br>&nbsp;&nbsp;REM&nbsp;&nbsp;&nbsp;&nbsp;CALLED&nbsp;BY&nbsp;&nbsp;&nbsp;:&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;REM&nbsp;&nbsp;&nbsp;&nbsp;DESCRIPTION&nbsp;:<br>&nbsp;&nbsp;REM<br>&nbsp;&nbsp;REM&nbsp;&nbsp;&nbsp;&nbsp;UPDATE&nbsp;HISTORY<br>&nbsp;&nbsp;REM<br>&nbsp;&nbsp;REM&nbsp;&nbsp;&nbsp;&nbsp;DATE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NAME&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DESCRIPTION<br>&nbsp;&nbsp;REM&nbsp;&nbsp;&nbsp;&nbsp;----------&nbsp;&nbsp;---------------&nbsp;&nbsp;---------------------------<br>&nbsp;&nbsp;REM&nbsp;&nbsp;&nbsp;&nbsp;2007-09-17&nbsp;&nbsp;&nbsp;&nbsp;SZ_CEN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Initialize!<br>&nbsp;&nbsp;===============================================================================*/<br>&nbsp;&nbsp;type&nbsp;mytype&nbsp;is&nbsp;ref&nbsp;cursor;&nbsp;--return&nbsp;VCBOM_EXPLODER_DATA%rowtype;<br><br><br>&nbsp;&nbsp;PROCEDURE&nbsp;JOB_FND50ITEM(--ERRBUF&nbsp;&nbsp;&nbsp;OUT&nbsp;VARCHAR2,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--RETCODE&nbsp;&nbsp;OUT&nbsp;NUMBER,<br> &nbsp; &nbsp;P_JOB_NUMBER&nbsp;IN&nbsp;varchar2,<br> &nbsp;p_opseq in&nbsp;number,<br> &nbsp;mycurs &nbsp;&nbsp;out&nbsp;mytype);<br>&nbsp;&nbsp;<br><br>END&nbsp;VCWIP_JOB_FND50ITEM_PKG;<br>/<br>[red]-----------------pak&nbsp;body-----[/red]<br>CREATE&nbsp;OR&nbsp;REPLACE&nbsp;PACKAGE&nbsp;BODY&nbsp;vcwip_job_fnd50item_pkg<br>AS<br>&nbsp;&nbsp;&nbsp;PROCEDURE&nbsp;job_fnd50item&nbsp;(--ERRBUF&nbsp;&nbsp;&nbsp;OUT&nbsp;VARCHAR2,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;--RETCODE&nbsp;&nbsp;OUT&nbsp;NUMBER,<br> &nbsp; &nbsp;&nbsp;&nbsp;p_job_number&nbsp;IN&nbsp;varchar2,<br> &nbsp;&nbsp;&nbsp;p_opseq in&nbsp;number,<br> &nbsp;&nbsp;&nbsp;mycurs out&nbsp;mytype)<br>&nbsp;&nbsp;&nbsp;IS<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;v_org_id &nbsp;number;<br> &nbsp;&nbsp;v_job_no&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wip_entities.wip_entity_name%TYPE;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;v_effective_date&nbsp;&nbsp;&nbsp;DATE;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;v_80item&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;VARCHAR2&nbsp;(40);<br> &nbsp;&nbsp;ln_conc_request_id&nbsp;number&nbsp;:=&nbsp;NVL(&nbsp;fnd_global.conc_request_id,&nbsp;-1&nbsp;);<br> &nbsp;&nbsp;lv_error &nbsp;varchar2(100);<br> &nbsp;&nbsp;lv_message&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;VARCHAR2(100);<br> &nbsp;--&nbsp;c_item &nbsp;mytype%rowtype;<br>&nbsp;&nbsp;&nbsp;BEGIN<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SELECT&nbsp;wip.ORGANIZATION_ID,<br> &nbsp;&nbsp; &nbsp;--wip.wip_entity_name,&nbsp;<br> &nbsp;&nbsp; &nbsp;wdj.scheduled_start_date,&nbsp;<br> &nbsp;msi.segment1<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;INTO&nbsp;&nbsp;&nbsp;v_org_id,<br> &nbsp;&nbsp; &nbsp;--v_job_no,&nbsp;<br> &nbsp;&nbsp; &nbsp;v_effective_date,&nbsp;<br> &nbsp;v_80item<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FROM&nbsp;wip_entities&nbsp;wip,&nbsp;<br> &nbsp;wip_discrete_jobs&nbsp;wdj,<br> &nbsp;mtl_system_items&nbsp;msi<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WHERE&nbsp;1&nbsp;=&nbsp;1<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AND&nbsp;wip.wip_entity_id&nbsp;=&nbsp;wdj.wip_entity_id<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AND&nbsp;wip.organization_id&nbsp;=&nbsp;wdj.organization_id<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--AND&nbsp;wip.wip_entity_id&nbsp;=&nbsp;wro.wip_entity_id<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--and&nbsp;wro.wip_entity_id&nbsp;=&nbsp;121238<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AND&nbsp;wip.wip_entity_name&nbsp;=p_job_number&nbsp;&nbsp;&nbsp;--'1125770'<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--and&nbsp;wro.operation_seq_num&nbsp;=&nbsp;136<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AND&nbsp;wip.primary_item_id&nbsp;=&nbsp;msi.inventory_item_id<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AND&nbsp;wip.organization_id&nbsp;=&nbsp;msi.organization_id;<br> <br> &nbsp;BEGIN &nbsp;<br> lv_message&nbsp;:=&nbsp;&nbsp;VCBOM_EXPLODER_UTIL_PKG.VCBOM_EXPLODER_LOW_FUNC<br> &nbsp;&nbsp;&nbsp;&nbsp;(&nbsp;P_ORGANIZATION_ID&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&gt; v_org_id,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;P_ASSEMBLY_ITEM_FROM&nbsp;&nbsp;&nbsp;=&gt;&nbsp;v_80item,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;P_ASSEMBLY_ITEM_TO&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&gt;&nbsp;v_80item,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;P_IMPL_FLAG&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&gt;&nbsp;2,&nbsp;&nbsp;&nbsp;--1(Yes)&nbsp;means&nbsp;Un-Implementation&nbsp;Item&nbsp;Only,&nbsp;2(No)&nbsp;means&nbsp;Nothing!<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;P_ALTERNATE_BILL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&gt;&nbsp;NULL,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;P_REQUEST_ID&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&gt;&nbsp;ln_conc_request_id,&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;P_ERROR_MESSAGE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&gt;&nbsp;lv_error,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;P_SORT_BY&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&gt;&nbsp;NULL,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;P_DISPLAY_TYPE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&gt;'2',&nbsp;--Value-Set:[BOM_SRS_INDENTED_BILL_DISPLAY_TYPE]<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--[1]=All,&nbsp;[2]=Current,&nbsp;[3]=Future&nbsp;an&nbsp;current<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;P_EFFECTIVE_DATE &nbsp;=&gt;&nbsp;v_effective_date<br> &nbsp;&nbsp;);<br> EXCEPTION<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WHEN&nbsp;OTHERS&nbsp;THEN<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fnd_file.put_line(&nbsp;fnd_file.LOG,&nbsp;'*Error&nbsp;when&nbsp;call&nbsp;VCBOM_EXPLODER_UTIL_PKG.VCBOM_EXPLODER_LOW_FUNC,&nbsp;sqlerrm&nbsp;=&nbsp;'<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;||&nbsp;SQLERRM);<br>&nbsp;&nbsp;&nbsp;&nbsp;END;&nbsp;<br> <br> open&nbsp;mycurs&nbsp;for&nbsp;<br> select&nbsp;distinct--msi_80.segment1&nbsp;80_item,&nbsp;msi_80.description&nbsp;80_desc,&nbsp;ved.LEVEL_ID,<br> msi_50.segment1&nbsp;--,&nbsp;msi_50.description&nbsp;<br> from&nbsp;VCBOM_EXPLODER_DATA&nbsp;ved,&nbsp;<br> &nbsp;mtl_system_items&nbsp;msi_80,<br> &nbsp;mtl_system_items&nbsp;msi_50<br> --&nbsp;BOM_DEPARTMENTS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BD,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--&nbsp;MFG_LOOKUPS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ML1,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--&nbsp;WIP_REQUIREMENT_OPERATIONS&nbsp;WRO<br>&nbsp;&nbsp;&nbsp;&nbsp;where&nbsp;1=1&nbsp;<br> and&nbsp;ved.REQUEST_ID&nbsp;=&nbsp;&nbsp;ln_conc_request_id<br> and&nbsp;msi_80.inventory_item_id&nbsp;=&nbsp;ved.ASSEMBLY_ITEM_ID<br> and&nbsp;msi_80.organization_id&nbsp;=&nbsp;ved.ORGANIZATION_ID&nbsp;<br> and&nbsp;upper(msi_50.description)&nbsp;like&nbsp;upper('SMD%')<br> and&nbsp;ved.OPERATION_SEQ_NUM&nbsp;=&nbsp;p_opseq<br> and&nbsp;msi_50.inventory_item_id&nbsp;=&nbsp;ved.COMPONENT_ITEM_ID<br> and&nbsp;msi_50.organization_id&nbsp;=&nbsp;ved.ORGANIZATION_ID&nbsp;<br> --and&nbsp;msi_50.inventory_item_id&nbsp;=&nbsp;wro.INVENTORY_ITEM_ID<br> --and&nbsp;msi_50.organization_id&nbsp;=&nbsp;wro.ORGANIZATION_ID<br> --and&nbsp;wro.OPERATION_SEQ_NUM&nbsp;=&nbsp;136--p_opseq<br> --and&nbsp;wro.DEPARTMENT_ID&nbsp;=&nbsp;bd.DEPARTMENT_ID<br> --and&nbsp;upper(bd.DEPARTMENT_CODE)&nbsp;like&nbsp;upper('SMD%')<br> /*select&nbsp;msi_50.segment1,&nbsp;msi_50.description<br> from&nbsp;VCBOM_EXPLODER_DATA&nbsp;ved,&nbsp;<br> &nbsp;mtl_system_items&nbsp;msi_80,<br> &nbsp;mtl_system_items&nbsp;msi_50<br> --&nbsp;BOM_DEPARTMENTS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BD,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--&nbsp;MFG_LOOKUPS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ML1,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--&nbsp;WIP_REQUIREMENT_OPERATIONS&nbsp;WRO<br>&nbsp;&nbsp;&nbsp;&nbsp;where&nbsp;1=1&nbsp;<br> and&nbsp;ved.REQUEST_ID&nbsp;=&nbsp;&nbsp;ln_conc_request_id<br> and&nbsp;msi_80.inventory_item_id&nbsp;=&nbsp;ved.ASSEMBLY_ITEM_ID<br> and&nbsp;msi_80.organization_id&nbsp;=&nbsp;ved.ORGANIZATION_ID&nbsp;<br> and&nbsp;upper(msi_50.description)&nbsp;like&nbsp;upper('SMD%')<br> and&nbsp;ved.OPERATION_SEQ_NUM&nbsp;=&nbsp;p_opseq<br> and&nbsp;msi_50.inventory_item_id&nbsp;=&nbsp;ved.COMPONENT_ITEM_ID<br> and&nbsp;msi_50.organization_id&nbsp;=&nbsp;ved.ORGANIZATION_ID&nbsp;<br> */<br> ; &nbsp;<br> <br>&nbsp;&nbsp;/*&nbsp;&nbsp;for&nbsp;r_item&nbsp;in&nbsp;c_item<br> loop<br> fnd_file.put_line(fnd_file.LOG,r_item.segment1&nbsp;||'&nbsp;&nbsp;'||r_item.description);<br>&nbsp;&nbsp;&nbsp;&nbsp;end&nbsp;loop; <br>&nbsp;&nbsp;*/ &nbsp;<br>&nbsp;&nbsp;&nbsp;END;<br>END&nbsp;vcwip_job_fnd50item_pkg;<br>/
 
其实主要是Oracle过程要反回一个cursor:
 
SFG&nbsp;您的&nbsp;输出参数&nbsp;cursor&nbsp;在前台是怎么取的啊&nbsp;?
 
这里的Adodataset1就得到了一个DATASET了...其它的输出可以是这样得到:<br>var<br>...<br>StrValue:string;<br>FloValue:Double;<br>begin<br>...<br>ADODataSet1.CommandText&nbsp;:=&nbsp;'{call&nbsp;VCWIP_JOB_FND50ITEM_PKG.job_fnd50item(?,?,?,?)}';<br>&nbsp;&nbsp;ADODataSet1.Parameters.CreateParameter('p1',ftString,pdOutput,10,StrValue);<br>&nbsp;&nbsp;ADODataSet1.Parameters.CreateParameter('p2',ftFloat,pdOutput,4,FloValue);<br>&nbsp;&nbsp;ADODataSet1.Parameters.CreateParameter('p3',ftString,pdInput&nbsp;,10,JobNo);<br>&nbsp;&nbsp;ADODataSet1.Parameters.CreateParameter('p4',ftFloat,pdinput,4,OptSeq);<br>....<br><br>你也可以都让Cursor里反回
 
本纪:提示...结贴
 
接受答案了.
 
后退
顶部