请教PB调用oracle的function问题,谢谢

samsam28 2002-09-17 11:00:02
请教PB调用oracle的function问题,谢谢

oracle里已经有如下的函数,不必用pb创建

function fun
(
var1 in varchar2;
var2 in varchar2;
var3 out varchar2;
var4 out number
)
return varchar2 is
...........

现在要用pb调用这个已经定义于oracle内的函数,
并且取得返回的5个值,该怎么做?
请专家高手指教,谢谢
...全文
214 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
are2000 2002-09-17
  • 打赏
  • 举报
回复
DECLARE Emp_proc procedure for fun(:a,:b);
EXECUTE Emp_proc;
Fetch MyFoun into :c,:d;
记着用sqlcode检查是否成功。
alwaystar 2002-09-17
  • 打赏
  • 举报
回复
select fun(:var1,:var2)
into :var3,:var4
from dual;
如此简单!!!

shahand 2002-09-17
  • 打赏
  • 举报
回复
应该是只有三个返回值var3,var4,和return值

定义与执行Oracle中的存储过程

  本篇文章来源与时代朝阳数据库(原晓通数据库)培训部PowerBuilder资料库。

ORACLE中有函数与存储过程,其调用规则类似。下例中的函数除了返回一个值外,功能与上面的存储过程基本一样。在本例中,调用一个返回一个系统日期值的函数。

1. 创建函数

String sp_syntax
sp_syntax = &
"Create Function auths_fn( InArg IN integer,OutArg OUT integer) "+&
"Return Date as "+&
" Foo Date; "+&
"Begin "+&
" Select Count(*) into OutArg from auths"+&
" where sex = InArg ;"+&
" Foo := SYSDATE; "+&
" Return(Foo); "+&
"End auths_fn ; "
Execute Immediate :sp_syntax;
MessageBox("Create Oracle Stored Function", +&
" SqlCode= "+String(SQLCA.SqlCode)+&
"~n SqlDBCode= "+String(SQLCA.SqlDBCode)+&
"~nSqlErrText= "+SQLCA.SqlErrText)

2. 定义该函数

integer InArg, OutArg
DateTime ReturnDateArg
ReturnDateArg = DateTime(Date("96/12/02"),Time("01:02:03"))
Declare MyFoun procedure for auths_fn(:InArg);

3. 执行定义好的函数

Execute MyFoun;
MessageBox("Execute Stored Function", +&
" SqlCode= "+String(SQLCA.SqlCode)+&
"~n SqlDBCode= "+String(SQLCA.SqlDBCode)+&
"~nSqlErrText= "+SQLCA.SqlErrText)
Fetch MyFoun into :ReturnDateArg,:OutArg ;
MessageBox("Fetch Stored Function", +&
" SqlCode= "+String(SQLCA.SqlCode)+&
"~n SqlDBCode= "+String(SQLCA.SqlDBCode)+&
"~nSqlErrText= "+SQLCA.SqlErrText)

4. 关闭函数并显示函数返回的结果

Close MyFoun;
MessageBox("myproc returned", "OutArg1 = "+String(OutArg1)+&
"~nOutArg2 = "+OutArg2+"~nReturnDateArg = "+String(ReturnDateArg))

5. 删除函数

Execute Immediate "Drop Function auths_fn";

  通过前面的例子我们可以看出:不同的数据库系统支持的存储过程的形式和功能都有一定的差别,但是它们在PowerBuilder中的定义和执行都一样。存储过程可以返回一组值,也可以返回一个结果集,用户可以将存储过程返回的数据直接拿来处理,也可以传给数据窗口(使用外部数据源的数据窗口)。
spoondrift1 2002-09-17
  • 打赏
  • 举报
回复
are2000(土狗)说得对
are2000 2002-09-17
  • 打赏
  • 举报
回复
不好意思,最后一行写错了
Fetch Emp_proc into :c,:d;

1,108

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 相关问题讨论
社区管理员
  • 基础类社区
  • WorldMobile
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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