我乃一oracle菜鸟,向各位高手请教:
一个简单的存储过程:
CREATE OR REPLACE PROCEDURE MYDBA.MYPROC (Kname out char) as
lid number;
lname varchar2(8);
lsex varchar2(2);
cursor region_cur is
select id,name,sex
from mydba.testtb;
begin
open region_cur;
fetch region_cur into lid,lname,lsex;
while region_cur%found
loop
if lid is null then
null;
else
Kname:=lname;
end if;
fetch region_cur into lid,lname,lsex;
end loop;
close region_cur;
end;
在oracle中执行正常,在delphi中放了一个storedproc,设置好后,调用open,或exeproc均返回“capability not supported”的错误信息,怎么回事。
还有个问题,oracle的存储过程可以返回数据集吗,返回参数值和返回数据集两种结果如果获取。
一个简单的存储过程:
CREATE OR REPLACE PROCEDURE MYDBA.MYPROC (Kname out char) as
lid number;
lname varchar2(8);
lsex varchar2(2);
cursor region_cur is
select id,name,sex
from mydba.testtb;
begin
open region_cur;
fetch region_cur into lid,lname,lsex;
while region_cur%found
loop
if lid is null then
null;
else
Kname:=lname;
end if;
fetch region_cur into lid,lname,lsex;
end loop;
close region_cur;
end;
在oracle中执行正常,在delphi中放了一个storedproc,设置好后,调用open,或exeproc均返回“capability not supported”的错误信息,怎么回事。
还有个问题,oracle的存储过程可以返回数据集吗,返回参数值和返回数据集两种结果如果获取。
我都在用IB多点。
open;
getresult();
char a:=parambyname(param1).asstring;
好像不能返回數據集
这是我的例子。
AdoQuery1.Close;
AdoQuery1.SQL.Clear;
AdoQuery1.SQL.Add('{call PKG_JCCTEST1.INSERTCLASS(?,?,?)}');
AdoQuery1.Parameters.CreateParameter('P1',ftstring,pdinput, 50,'c111');
AdoQuery1.Parameters.CreateParameter('P2',ftstring,pdinput, 50,'cn111');
AdoQuery1.Parameters.CreateParameter('P3',ftinteger,pdinput, 50,26);
AdoQuery1.ExecSQL;
利用call方法调用oracle过程时,参数必须由?来传, 即使你要传的参数为常量。
AdoQuery1.Close;
AdoQuery1.SQL.Clear;
AdoQuery1.SQL.Add('{call PKG_JCCTEST1.INSERTCLASS(?,?,?)}');
AdoQuery1.Parameters.CreateParameter('P1',ftstring,pdinput, 50,'c111');
AdoQuery1.Parameters.CreateParameter('P2',ftstring,pdinput, 50,'cn111');
AdoQuery1.Parameters.CreateParameter('P3',ftinteger,pdinput, 50,26);
AdoQuery1.ExecSQL;
利用call方法调用oracle过程时,参数必须由?来传, 即使你要传的参数为常量。
标准控件Tstoedproc难道没什么用吗?
我用SQLConnection连上ORACLE后,在TSQLStoredproc里确看不到ORACLE里的存储过程列表.
CREATE OR REPLACE PROCEDURE MYDBA.MYPROC (Kname out char)
中 kname的類型改為varchar2試試
但是在调用的时候
一定要设置好参数类型
不论参数类型是IN 或者IN OUT 类型的
都要在调用的正确的给出
QQ33524826
或者storedproc控件不连接ADOConnection,用自己连数据库