高分求救:急!

huiyue99 2003-01-23 11:46:12
使用Dblibary接口,exec 某个存储过程,有两个参数。
exec xxx(100,100);在SQL/PLUS中执行正常,但是ODatabase.ExecuteSQL("exec xxx(100,100)");错误,返回8197(commit error).
过程中使用了delete语句,是不是错误的原因啊?怎么避免?
...全文
23 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Lastdrop 2003-01-23
  • 打赏
  • 举报
回复
zzzsssccc(籍秋风) 说的对,exec procedure是SQL*PLUS中的调用方法,

在程序里
一般用
"begin /
xxx(100,100);/
end;"
huiyue99 2003-01-23
  • 打赏
  • 举报
回复
发现你的用法不是C++的,是不是PB啊?
huiyue99 2003-01-23
  • 打赏
  • 举报
回复
ok -------------

Create or Replace procedure XXXXX (n1 in number,
n2 in number)
as
n3 number;
begin
select min(www) into n3 from TT;
if (n3 is null) then
n3 := 0;
end if;
delete from TT where www<n1 and www between n1 and n1+n2;
end;
.
/
三杯倒 2003-01-23
  • 打赏
  • 举报
回复
在程序里
一般用
"begin /
xxx(100,100);/
end;"

不过好像是commit时出错

把过程贴出来
huiyue99 2003-01-23
  • 打赏
  • 举报
回复
明白了!TNND。要用参数才能解决。
先GetParamter,然后add参数,然后 begin xxx(:p1,:p2); end;
然后remove参数。
查了一下自己6年前的程序才知道,郁闷!
Lastdrop 2003-01-23
  • 打赏
  • 举报
回复
没有调查可就没有发言权哦,我可是用过oracl32.dll的。
m_pDatabase->ExecuteSQL("begin / xxx(100,100); /end;");
应该为:
m_pDatabase->ExecuteSQL("begin xxx(100,100); end;");
zzzsssccc(籍秋风) 的帖子中的 / 是字符串换行的连接符,你现在的SQL语句是一行,当然不用/了,不过应该是\。

m_pDatabase->ExecuteSQL("begin " \
" xxx(100,100);" \
" end;");

不过,不用\也是可以的。
m_pDatabase->ExecuteSQL("begin "
" xxx(100,100);"
" end;");

huiyue99 2003-01-23
  • 打赏
  • 举报
回复
估计你们没用过Oracl.h加oraclm32.dll的开发,TNND。Pro C不能算啊!
huiyue99 2003-01-23
  • 打赏
  • 举报
回复
m_pDatabase->ExecuteSQL("begin / xxx(100,100); /end;"); 8197error
m_pDatabase->ExecuteSQL("begin \\ xxx(100,100); \\end;"); 8197error
m_pDatabase->ExecuteSQL("begin / exec xxx(100,100); /end;"); 8197error.
你们两个说的对不对啊?

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧