使用TSqlQuery调用存储过程返回一个游标时听别人说游标输出参数不需要定义但是我的提示缺少一个参数请提示
存储过程
PROCEDURE getrule (jsname IN VARCHAR, qxjs OUT tmh.cvsx)
IS
qxname VARCHAR2 (60);
gname VARCHAR2 (60);
BEGIN
OPEN qxjs FOR
SELECT tmh.qx.NAME qxname, tmh.gnmk.NAME gnname
FROM tmh.qx, tmh.gnmk
WHERE tmh.qx.ID IN (
SELECT ID
FROM tmh.rule
WHERE tmh.rule.gnid =
(SELECT ID
FROM tmh.zhrule
WHERE tmh.zhrule.NAME = jsname))
AND tmh.gnmk.ID IN (
SELECT gnid
FROM tmh.rule
WHERE tmh.rule.gnid =
(SELECT ID
FROM tmh.zhrule
WHERE tmh.zhrule.NAME = jsname));
EXCEPTION
WHEN NO_DATA_FOUND
THEN
NULL;
WHEN OTHERS
THEN
-- Consider logging the error and then re-raise
RAISE;
END getrule;
调用存储过程
with GETRUL do
begin
GETRUL.Close;
with sql do
begin
sql.Clear;
sql.Add('{call tmh.getrule(?)} ');
end;
GETRUL.Parameters.CreateParameter('jsname',ftString,pdinput,60,trim(jsid.Text));
GETRUL.Open;
end;
错误提示
参数个数或类型错误。
存储过程
PROCEDURE getrule (jsname IN VARCHAR, qxjs OUT tmh.cvsx)
IS
qxname VARCHAR2 (60);
gname VARCHAR2 (60);
BEGIN
OPEN qxjs FOR
SELECT tmh.qx.NAME qxname, tmh.gnmk.NAME gnname
FROM tmh.qx, tmh.gnmk
WHERE tmh.qx.ID IN (
SELECT ID
FROM tmh.rule
WHERE tmh.rule.gnid =
(SELECT ID
FROM tmh.zhrule
WHERE tmh.zhrule.NAME = jsname))
AND tmh.gnmk.ID IN (
SELECT gnid
FROM tmh.rule
WHERE tmh.rule.gnid =
(SELECT ID
FROM tmh.zhrule
WHERE tmh.zhrule.NAME = jsname));
EXCEPTION
WHEN NO_DATA_FOUND
THEN
NULL;
WHEN OTHERS
THEN
-- Consider logging the error and then re-raise
RAISE;
END getrule;
调用存储过程
with GETRUL do
begin
GETRUL.Close;
with sql do
begin
sql.Clear;
sql.Add('{call tmh.getrule(?)} ');
end;
GETRUL.Parameters.CreateParameter('jsname',ftString,pdinput,60,trim(jsid.Text));
GETRUL.Open;
end;
错误提示
参数个数或类型错误。
解决方案 »
- 求软件界面的一些资料
- 文本框 验证不能为空
- IdTCPClient 和IDTCPServer传输图片的问题
- dxmdaset.dcu 是DevExpress 里面的文件么?
- 急!!!等待中! delphi 中Variant 如何转换成,一个流,或一个文件??
- 我的想法是,用timer控件,做一个倒计10秒的程序,在label的caption中显示倒数10秒的过程,10秒过后运行一个本地EXE文件,可惜,俺不懂如
- 关于MAINMENU菜单控件的用法问题,checkde属性问题
- 程序试用,提些建议!!
- Delphi 7和Delphi.net是不是同一个东东?
- Delphi和BCB的安装问题
- 高分求2000年以前东南大学的毕业证书样本
- 这种 动态 赋值,动态判断 要怎么表示??(内详)
@xxx varchar(1000)
ORACLE里好像没看见你定义参数
AS
/******************************************************************************
NAME: tmh
PURPOSE: REVISIONS:
Ver Date Author Description
--------- ---------- --------------- ------------------------------------
1.0 2006-01-03 1. Created this package.
******************************************************************************/
TYPE cvsx IS REF CURSOR; PROCEDURE addrul (
gnname IN VARCHAR2,
jsname IN VARCHAR2,
qxname IN VARCHAR2
); PROCEDURE getrule (jsname IN VARCHAR, qxjs OUT tmh.cvsx);
END tmh;
/
按我们的使用经验odac在各方面都强与bde/ado,至少它的程序发布时不用装oracle客户端