pb 获取oracle 的网络服务名

jaylue 2009-08-03 11:07:05
请问在pb中怎么样能够获取所有本机已连接的oracle网络服务名?即连接参数中的:ServerName
...全文
147 点赞 收藏 20
写回复
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
WorldMobile 2009-08-04
按行读也可以,以流模式来读也可以,需要解析servername
回复
jaylue 2009-08-04
[Quote=引用 16 楼 gdstx 的回复:]
同学,解析字符串这是搞任何语言的基础啊
[/Quote]

唉~我人懒,水平又低~
回复
gdstx 2009-08-04
同学,解析字符串这是搞任何语言的基础啊
回复
永生天地 2009-08-04
//简单写了一下,先给出个思路,有待完善
string ls_syntax,ls_current_syntax,ls_temp[]
long i,ll_length,ll_count
//ls_syntax tnsnames.ora文件的内容
string ls_listener

ls_temp[i]=''
ll_length=len(ls_syntax)
do while i<=ll_length
ls_temp[i] = mid(ls_syntax,i,1)
if ls_temp[i]='(' then
ll_count++
if ll_count = 1 then
ls_listener=trim(ls_current_syntax)
end if
end if

if ls_temp[i]=')' then
ll_count--
end if
ls_current_syntax+=ls_temp[i]
i++
loop

回复
jaylue 2009-08-04
[Quote=引用 13 楼 xys_777 的回复:]
下面这些可以写在一行里,手写有可能格式不是这样
引用 12 楼 jaylue 的回复:
引用 11 楼 xys_777 的回复:
注意如下,读取时要根据小括号来判断,切不可按行
ORCL_192.168.102.152 =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS =
        (PROTOCOL = TCP)
        (HOST = 192.168.102.152)
        (PORT = 1521)
      )
    )
    (CONNECT_DATA =
      (SID = orcl)
      (SERVER = DEDICATED)
    )
  )

为什么不能用行来读啊?以小括号来判断的话,好像很难搞啊~

[/Quote]

以小括号来判断的话,能不能写个函数给小弟参考参考?
回复
永生天地 2009-08-04
下面这些可以写在一行里,手写有可能格式不是这样
[Quote=引用 12 楼 jaylue 的回复:]
引用 11 楼 xys_777 的回复:
注意如下,读取时要根据小括号来判断,切不可按行
ORCL_192.168.102.152 =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS =
        (PROTOCOL = TCP)
        (HOST = 192.168.102.152)
        (PORT = 1521)
      )
    )
    (CONNECT_DATA =
      (SID = orcl)
      (SERVER = DEDICATED)
    )
  )

为什么不能用行来读啊?以小括号来判断的话,好像很难搞啊~
[/Quote]
回复
jaylue 2009-08-04
[Quote=引用 11 楼 xys_777 的回复:]
注意如下,读取时要根据小括号来判断,切不可按行
ORCL_192.168.102.152 =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS =
        (PROTOCOL = TCP)
        (HOST = 192.168.102.152)
        (PORT = 1521)
      )
    )
    (CONNECT_DATA =
      (SID = orcl)
      (SERVER = DEDICATED)
    )
  )
[/Quote]
为什么不能用行来读啊?以小括号来判断的话,好像很难搞啊~
回复
永生天地 2009-08-04
注意如下,读取时要根据小括号来判断,切不可按行
ORCL_192.168.102.152 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS =
(PROTOCOL = TCP)
(HOST = 192.168.102.152)
(PORT = 1521)
)
)
(CONNECT_DATA =
(SID = orcl)
(SERVER = DEDICATED)
)
)
回复
永生天地 2009-08-04
这个文件就是文本文件
[Quote=引用 9 楼 jaylue 的回复:]
引用 8 楼 jlwei888 的回复:
以行读取这个文件,凡有SERVICE_NAME就把后面的名字取出了就是了!


能把ora文件直接当做文本来读吗?
[/Quote]
回复
jaylue 2009-08-04
[Quote=引用 8 楼 jlwei888 的回复:]
以行读取这个文件,凡有SERVICE_NAME就把后面的名字取出了就是了!
[/Quote]

能把ora文件直接当做文本来读吗?
回复
jlwei888 2009-08-04
以行读取这个文件,凡有SERVICE_NAME就把后面的名字取出了就是了!
回复
jaylue 2009-08-04
自己up一下
回复
jaylue 2009-08-04
先结贴吧,我自己写了个函数,现在能取到想要的了,不过用的是行模式读取的,等下再试试流模式行不行~~
回复
jaylue 2009-08-04
up 一下,看看有没有更好的方法
回复
jaylue 2009-08-03
[Quote=引用 5 楼 gdstx 的回复:]
最懒人的办法:
1:建1个只有1个字段的外部数据源的数据窗;
2: 将tnsnames.ora导入;
3: SetFilter("pos(str, 'SERVICE_NAME') > 0" 后就离目标不远了
[/Quote]

怎样将tnsnames.ora导入?importfile 不能导入ora文件啊~
回复
gdstx 2009-08-03
最懒人的办法:
1:建1个只有1个字段的外部数据源的数据窗;
2: 将tnsnames.ora导入;
3: SetFilter("pos(str, 'SERVICE_NAME') > 0" 后就离目标不远了
回复
jaylue 2009-08-03
[Quote=引用 3 楼 gdstx 的回复:]
要求还满高,那你就去解析tnsnames.ora算了
[/Quote]
恩,我就是想解析tnsnames.ora,有没有什么办法?我不知道怎么来解析啊!
回复
gdstx 2009-08-03
要求还满高,那你就去解析tnsnames.ora算了
回复
jaylue 2009-08-03
[Quote=引用 1 楼 gdstx 的回复:]
sqlca.ServerName
[/Quote]
我是要获取所有服务名!比如我机子上连接的oracle网络服务名有三个的话,我在pb中怎么样能取得这三个网络服务名!
回复
gdstx 2009-08-03
sqlca.ServerName
回复
发动态
发帖子
数据库相关
创建于2007-09-28

730

社区成员

PowerBuilder 数据库相关
申请成为版主
社区公告
暂无公告