to xiongying860421(文盲) sqlca.function get_shop('22.1658.001') get_shop是我自定义的ORACLE函数。我这么写出错,应该怎样写,请具体说说,谢谢了,先!
有参数 select your_fu(para) into :l_values from dual; 无参数 不要加() 同liangliangbj(亮亮) ( ) 信誉:100
和调用oracle内带函数方法一样,例如:你可以:select count(*) from table1; (这里count(*)就是oracle的内带函数)当然,你也可以这样:select func(param) from table1; (其中,func(param)就是你自己定义的函数了。)
是内置函数就没区别,直接用SQL语句直接引用就可以
可以看作是从一个表中取数据 select fun_name into :ls_temp from dual;
对不起啊,长时间没来看一看,因为我也在忙! 具体操作可见《powerbuilder 7.0应用开发技术详解》第95页,利用事务对象调用存储过程。 下面以默认事务对象SQLCA举一个例子: 1、定义用户对象,略... 2、在用户对象中声明外部存储过程,例oralce function "myString" function string myString(arg1...) RPCFUNC alias "dba.myString" 3、sqlca.dbms="ora9i" sqlca.logid="scott" sqlca.logpass="***" sqlca.ServerName="oracle9" connect using sqlca if sqlca.sqlcode<> then MessageBox("连接失败",sqlca.SQLErrText) return end if string myName="" myName=sqlca.myString("???") MessageBox("提示信息",myName) disconnect最关键是第二步: a、在用户对象画板脚本视图中,从第一个列表框中选 declare,从第二个列表框中选择 local external functions b、光标放在 declare local external functions 视图中,从弹出式菜单或在edit菜单中选择paste special>sql>romte store procedure,powerbuilder将自动从数据库中装载存储过程,出现对话框,选择你要声明的存储过程就是了。OK,这回可以搞定了!
前面几位朋友说的方法我试过了,好用,谢谢各位。 只是: xiongying860421(文盲) 您说的第二步中paste special>sql>romte store procedure 我试用时romte store procedure一项是灰色的不可用,怎么回事啊
哪只能说明你的powerbuilder与数据库没有连上。不过,你也要注意你的版本上应打的补丁,不要紧,在你的模块的声明部分照我写的第二步的声明一下就行了!声明存储过程的方法是:SUBROUTINE procedurename({REF}datatype1 arg1,...) RPCFUNC {AILAS FOR "spname"} 与 FUNCTION rtndatatype functionname({REF}datatype1 arg1,...) RPCFUNC {AILAS FOR "spname"} 有什么不同?需要注意的是:1、数据库的过程应是用双引号的,格式应是,所有者.过程名。2、RPCFUNC 不能少,它告诉PB是远程过程调用。
select your_fu(para) into :l_values from dual;
无参数 不要加()
同liangliangbj(亮亮) ( ) 信誉:100
(这里count(*)就是oracle的内带函数)当然,你也可以这样:select func(param) from table1;
(其中,func(param)就是你自己定义的函数了。)
select fun_name into :ls_temp from dual;
具体操作可见《powerbuilder 7.0应用开发技术详解》第95页,利用事务对象调用存储过程。
下面以默认事务对象SQLCA举一个例子:
1、定义用户对象,略...
2、在用户对象中声明外部存储过程,例oralce function "myString"
function string myString(arg1...) RPCFUNC alias "dba.myString"
3、sqlca.dbms="ora9i"
sqlca.logid="scott"
sqlca.logpass="***"
sqlca.ServerName="oracle9"
connect using sqlca
if sqlca.sqlcode<> then
MessageBox("连接失败",sqlca.SQLErrText)
return
end if
string myName=""
myName=sqlca.myString("???")
MessageBox("提示信息",myName)
disconnect最关键是第二步:
a、在用户对象画板脚本视图中,从第一个列表框中选 declare,从第二个列表框中选择 local external functions
b、光标放在 declare local external functions 视图中,从弹出式菜单或在edit菜单中选择paste special>sql>romte store procedure,powerbuilder将自动从数据库中装载存储过程,出现对话框,选择你要声明的存储过程就是了。OK,这回可以搞定了!
只是: xiongying860421(文盲) 您说的第二步中paste special>sql>romte store procedure
我试用时romte store procedure一项是灰色的不可用,怎么回事啊
与
FUNCTION rtndatatype functionname({REF}datatype1 arg1,...) RPCFUNC {AILAS FOR "spname"}
有什么不同?需要注意的是:1、数据库的过程应是用双引号的,格式应是,所有者.过程名。2、RPCFUNC 不能少,它告诉PB是远程过程调用。
如果不没有运行一个catalog.sql脚本,你的PB根本连不上数据库,请参考ORACLE的catalog.sql文件的路径Oracle\oraX\rdbms\admin\catalog.sql