pb 获取oracle 的网络服务名

jaylue 2009-08-03 11:07:05
请问在pb中怎么样能够获取所有本机已连接的oracle网络服务名?即连接参数中的:ServerName
...全文
166 20 打赏 收藏 举报
写回复
20 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
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
  • 打赏
  • 举报
回复
相关推荐
发帖
数据库相关

746

社区成员

PowerBuilder 数据库相关
社区管理员
  • 数据库相关社区
加入社区
帖子事件
创建了帖子
2009-08-03 11:07
社区公告
暂无公告