delphi 用ADO怎么执行Oracle的存储过程。(ADOquery)(100分)

  • 主题发起人 主题发起人 ygw531
  • 开始时间 开始时间
Y

ygw531

Unregistered / Unconfirmed
GUEST, unregistred user!
如题:<br>(一):存储过程样式一:<br>Create Or Replace Package lzuser.pkg_proc{建包}<br>As<br>&nbsp; Type proc_cur Is Ref Cursor;<br>&nbsp; Procedure GetData(Data_cur Out pkg_proc.proc_cur);<br>End pkg_proc;<br><br><br>Create Or Replace Package Body lzuser.pkg_proc{包体}<br>As<br>&nbsp; Procedure GetData(Data_cur Out pkg_proc.Proc_cur)<br>&nbsp; Is<br>&nbsp; Begin<br>&nbsp; &nbsp; Open Data_cur For <br>&nbsp; &nbsp; &nbsp; Select "Name" As TotalType,'1' As TotalNum &nbsp;From lzuser."B_Company";<br>&nbsp; End GetData;<br>End pkg_proc; <br><br>像(一)一样的存储过程过ADO怎么调用?<br><br>(二)存储过程样式二:<br>create or replace package lzuser.CurType{包}<br>is<br>type Cur_Type is ref cursor;<br>end;<br><br><br>CREATE OR REPLACE Procedure LZUSER.Get_B_Company{存储过程}<br>&nbsp;( RecCur Out Lzuser.CurType.Cur_Type)<br>As<br>&nbsp; SqlStr Varchar2(2000);<br>Begin<br>&nbsp; SqlStr :='Select "Id","Name","AreaName","Tel","Linkman","Leader","LeaderTel","Address","Remark" From lzuser."B_Company"';<br>&nbsp; Open RecCur For<br>&nbsp; &nbsp; SqlStr;<br>End ;<br>像二一样的存储过程又该如何调用?<br>这两者有什么区别吗?<br><br>请各位大侠帮忙看看,小弟首次使用Oracle,在此诚心请教。望各位赐教。
 
这个oracle存储过程返回数据集。<br>存储过程应该用adostoredproc调用~<br><br>没什么区别,一个是包内的函数,一个是没有定义包的~
 
我调用是这么调用的:<br>&nbsp; with ADOStoredProc1 do<br>&nbsp; begin<br>&nbsp; &nbsp; ConnectionString:=<br>&nbsp; &nbsp; 'Provider=OraOLEDB.Oracle.1;Password=a123;Persist Security Info=True;User ID=lzuser;Data Source=EmitCard';<br>&nbsp; &nbsp; Parameters.Clear;<br>&nbsp; &nbsp; ProcedureName:=lzuser.pkg_proc.GetData()';<br>&nbsp; &nbsp; Parameters.CreateParameter(':RecCur',ftCursor,pdOutput,1000,null);<br>&nbsp; &nbsp; Open;<br>&nbsp; end;<br>提示错误是:错误的参数信息,提供了不一致或不完整的信息。<br>朋友请帮忙看看是不是这样写。<br>如果用adoquery该怎么执行。具体示例如果何,请大侠公示!
 
参数的类型不匹配,你直接在控件里边指定存储过程名,然后自动获取它的参数就可以了。这样就不会出现类型不匹配的情况了。
 
未解决 。
 
Parameters.CreateParameter(':RecCur',ftCursor,pdOutput,1000,null);<br>你怎么给里边的参数辅值的.
 
这个参数是输出值,不用赋值的吧。
 
期待大侠出手帮忙解决。
 
后退
顶部