Chinaunix

标题: 通过dblink调用带参数的函数?谁用过? [打印本页]

作者: TOADLover    时间: 2009-10-09 11:30
标题: 通过dblink调用带参数的函数?谁用过?
RT
我在10.20.30.40上的Oracle中怎么调用10.20.30.41上的Oracle数据库中的某个带输入参数的Function?
----------------
我是这么用的:
SELECT

DECODE
                      (mp.f_get_d@dev (tbl_a.lot_id),
                       '19000101', ' ',
                       mp.f_get_d@dev (tbl_a.lot_id) || '000000'
                      ) AS proj_out_date,

FROM tbl_a
------------------
活见鬼的,这上面的语句不报错,但就是proj_out_date没有值出来。。。。

这个dev是remote端,在dev上f_get_d函数正常的很,能选出值来,mp是dev上的一个用户。

[ 本帖最后由 TOADLover 于 2009-10-9 11:56 编辑 ]
作者: Minsic    时间: 2009-10-09 11:30
标题: 回复 #5 TOADLover 的帖子
pl/sql默认是用所有者权限来跑的,有点像unix下的suid,authid current_user可以来指定以调用者权限来运行pl/sql块,一开始怀疑是这个问题导致这种看上去比较奇怪的现象的,但是既然函数只是取了时间,应该不是这个引起的问题。
作者: TOADLover    时间: 2009-10-09 11:37
标题: 奇怪,我的帖子最近都没人回了?
ziggler和山野村夫到哪里去了?
作者: Minsic    时间: 2009-10-09 12:12
没问题啊,是不是函数里面用了调用者权限了?
作者: ziggler    时间: 2009-10-09 12:17
可以打调试语句吗?
作者: TOADLover    时间: 2009-10-09 13:12
原帖由 Minsic 于 2009-10-9 12:12 发表
没问题啊,是不是函数里面用了调用者权限了?

-----------------------------------------------------
晕,单独执行,现在是没没有问题的了,但是在一个稍复杂些的SQL中,包含union all,就不行了。

查不出数据来,也不报错,我只好放弃了这种dblink调用远程函数的做法,把函数放到本地的Schema中了。。

函数里面用了调用者权限---是什么意思?

我在函数中只有一个select语句用来取日期的。在这个函数体内部没有任何grant语句。

[ 本帖最后由 TOADLover 于 2009-10-9 13:13 编辑 ]
作者: TOADLover    时间: 2009-10-09 13:14
原帖由 ziggler 于 2009-10-9 12:17 发表
可以打调试语句吗?


可以打调试语句吗---什么意思?怎么打调试语句?
作者: TOADLover    时间: 2009-10-09 15:35
没找到真实原因。。换种思路解决了,在6楼
作者: Minsic    时间: 2009-10-09 15:44
标题: 回复 #8 TOADLover 的帖子
汗,这就给分了啊,惭愧




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2