总是遇到一些奇奇怪怪的问题。请各位大侠进来看看:ADOStoredProc链接Oracle的存储过程。痛苦!(300) (300分)

  • 主题发起人 主题发起人 白衣书生
  • 开始时间 开始时间

白衣书生

Unregistered / Unconfirmed
GUEST, unregistred user!
各位大侠好:
用ADOStoredProc链接Oracle的存储过程,问题如下:
1.把存储过程写在Oracle的“过程”中,可在ADOStoredProc.ProcedureName属性中找到这个存储过程名称,
连上后,点击ADOStoredProc.Parameters属性,在里面可以看到存储过程中使用的所有参数变量,都已经自动列出。

2.把存储过程写在Oracle的“程序包”中,ProcedureName属性中也有存储过程名称,
但点击ADOStoredProc.Parameters属性,里面却空空如也! (包和包体都已经在Oracle中编译通过。)

这是为何? 在“程序包”中的存储过程怎样使用?

3.我是想这样用的:
ADOStoredProc.ProcedureName:='TEXT_INSERT';
with ADOStoredProc do
begin
Parameters.ParamByName('code_i').Value:=Code_Edit.text;
try
ExecProc;
except
end;
end;
但Parameters属性中没有任何东西,我的ParamByName('code_i').就不能这样用了!!

老天,我该怎么办?? 晕菜了! 望各位大侠指教! 请帮忙提前一下,有分的。
 
Parameters.params.CreateParam(ftstring,'XX',ptinput);
Parameters.ParamByName('XX').asString :='12312';
 
to 楼上大哥:
用我需要CreateParam语句手工生成参数吗?
ADOStoredProc不能自动从存储过程中取得所有参数变量吗??
 
在写一个中间存储过程,用它调用程序包中的程序,delphi程序中调用这个存储过程
 
执行ADOStoredProc.getparams.....tf
 
是我的包体中的过程写的有问题吗? 那位大侠讲解一下????
 
to 北斗:老兄什么意思啊?
ADOStoredProc有一个GetNamePath ,没有getparams...
-------------------------------------------------------------------
为什么? 各位没有遇到过这样的问题吗?
ADOStoredProc.Parameters中的参数能自动得到吗? 是我的包有问题吗?
程序包:
AS
procedure Text_insert(code_i in Text.code%type);
end ;
程序包体:
as
procedure Text_insert(code_i in Text.code%type)
IS
begin
insert into TextMatter(code) values(code_i);
end Text_insert;
end ;
在Oracle817中编译通过。
 
ADOStoredProc.Paratemers.Add();
然后

Parameters.ParamByName('code_i').Value:=Code_Edit.text
 
抱歉!这样的做法我没有用过
如果是三层的话,可以右健点击ClientDataset的Fetch params来取得参数
 
to 天真: Add 不行吧。要用也是AddParameter。
我是想问为何不能自动得到这些参数呢?
to luyear 老大:
不用3层,多谢。

第一次使用,问题多多。
 
帮助中用法这样提示:
ADOStoredProc1.CreateParameter('Parm1', ftString, pdInput, 10, nil);
假如我的存储过程有很多(几十个)参数,那岂不是要CreateParameter很多次?
该怎么用啊? ?
 
这是没办法的事谁叫我们自己用动态的呢:)
 
用ADOStoredProc链接Oracle的存储过程会有问题,要改变成ADODATASET就可以了。
这个问题我曾经和别的大富翁讨论过。
 
to wumeng:老大的旧帖在哪里啊? 你可不能见死不救啊?
ADODATASET 怎么存储过程的传递参数啊?

我用ADOStoredProc1.CreateParameter('Parm1', ftString, pdInput, 10, nil);这样的句子创建参数,可是编译时老是提示[Error] DataModule.pas(270): Incompatible types: 'OleVariant' and 'Pointer'。这是哪里的错误啊?
 
解决了一个:CreateParameter('Parm1', ftString, pdInput, 10, 0);--nil改为了0编译通过。

究竟DOStoredProc怎样使用 程序包体中的存储过程啊? 我翻过了旧帖啊。
很痛苦~
 
不知你使用普通的BDE的StorProc控件试验过没有,结果如何?
一般来说,在BDE里面应该能够出现存储过程的参数(编辑阶段)。
当然,使用BDE调用存储过程(Oracle的)有时也存在类似问题。删除掉控件重新添加又好了。
还有,尽量都使用大写字母。
我所能说的就这些。
 
还有,使用BDE Explore看一下,是否存在那个Procedure 或者Package。
 
多谢 yzhshi 大侠!
 
好了,将近1天搞这个问题。
终于搞定了。-----感觉很爽! 发分庆祝了!。!。!。

感谢楼上各位的鼎力相助。
尤其感谢huft、luyear、wumeng、yzhshi、北斗、天真、蒸发密令 几位大侠。
其中huft大侠是我的大学同班同学也是同桌,是我请他来看这个问题。他在QQ上帮我不少忙,我就不回避了,多给他几分,请其他几位大侠不要在意。[:D]
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
928
SUNSTONE的Delphi笔记
S
D
回复
0
查看
844
DelphiTeacher的专栏
D
后退
顶部