Oracle的PL_SQL语句如何在DELPHI中运行(100分)

  • 主题发起人 主题发起人 lotte
  • 开始时间 开始时间
L

lotte

Unregistered / Unconfirmed
GUEST, unregistred user!
向各位大侠请教一个问题:
我正在做一个Oracel数据库的前端管理程序,原先在SQL*PLUS上做了一些有关
的PL_SQL程序,想移植到DELPHI中,原先的SQL语句基本上可照搬,但PL_SQL
却无法在DELPHI上正常运行,现举例如下:


下面为一段ORACEL的PL_SQL程序,前面的行号仅为了说明方便,
form_deliver_end 是一个数据表,有两个字符字段,长度分别为12和1,
这段程序功能是向FORM_DELIVER_END中插入从R99000000010到R99000000018
这一系列记录:

1:Declare //声明两个变量 I(数值量),K(字符量)
2: I Number(7);
3: K Varchar2(12);
4:Begin
5: I :=10; // I初始值为10,下面是循环
6: Loop
7: K:='R9900' || Lpad(To_Char(I),7,'0');
8: Insert Into Form_Deliver_End Values(K,'');
9: I:=I+1;
10: If I>18 Then
11: Exit;
12: End If;
13: End Loop;
14:End;

该段程序在ORACEL的SQL*PLUS环境下运行成功,而在DELPHI环境下:
1)我首先用的是DELPHI自带的QUERY控件,将上述程序置入其SQL属性中,然
后用EXESQL运行,
/***************************************************************/
General SQL error.
ORA-06550: 行 9, 列 5:
PLS-00103: 出现符号 "" 当遇到下列之一时:
:= . ( @ % ;
符号 ":=" 被替换为 "" 后继续.
ORA-06550: 行 13,
列 6:
PLS-00103: 出现符号 "" 当遇到下列之一时:
:= . ( @ % ;
符号 ":=" 被替换为 "" 后继续.
ORA-06550: 行 17, 列 6:
PLS-00103:
出现符号 "" 当遇到下列之一时:
:= . ( @ % ;
符号 ":=" 被替换为 "" 后继续.
/***************************************************************/
2)然后我用RXLIB的SQLSCRIPT控件,将上述程序写入其SQL中,然后用EXESQL
运行,出现以下出错信息:
/***************************************************************/
General SQL error.
ORA-06550: 行 5, 列 0:
PLS-00103: 出现符号 ")" 当遇到下列之一时:
:= ; not null default.
/***************************************************************/请教各位高手,为何会出现这种情况,是不是我在什么地方没有设置好或应该用
其它方法,请各位不吝赐教!
万分感谢!
 
采用DOA控件中的oraclePackage则可!
 
请问DOA控件如何得到,如何使用,谢谢!
并请各位继续就此问题提出不同的见解,万分感谢!
 
在Oracle中编译你的Procedure
Delphi提供的控件TStoredProc就是专门调用Oracle等的Procedure
 
在ORACLE中编译好的PROC或FUNC,如果其中含有一些参数,需要DELPHI中某
些变量对其进行赋值,如何处理?
另外,是否有支持PL_SQL的控件,且不需在ORACLE中编译而直接在DELPHI中
赋值和运行,谢谢各位大侠,请继续给予帮助!
 
DOA已发给你了

请查收。

解包后安装则可!
 
exp,
设定好StoreProc1: TStoreProc;

StoreProc1.ParamByName('aaa').AsString := 'xxx';
StoreProc1.ExecProc;
 
谢谢两位的全力帮助,特别感谢volan给我的一个很好的控件!
不过,DOA好像是一个未注册版,不知volan有没有注册机,如有能否提供给小弟,
万分感激!
随后立即给分!
volan:80
xixi:20
不好意思,给两位的分数实在太少,只因我分数不多!以后一定努力!
 
多人接受答案了。
 
后退
顶部