免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1615 | 回复: 2
打印 上一主题 下一主题

關於字串和命令處理問題 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-10-05 12:31 |只看该作者 |倒序浏览
因為 我用模組化的方式 做一個 功能
但是因為 命令中一定會有 @ $ # 等 perl 內定功能
如果 類似
$module_Source[4]=
                qq(
                        select count(*) from gv$session
                );

$sqlA = qq{$module_Source[$module_Scount] };
$sth = $dbh->prepare( $sqlA );

我陣列裡面 gv$session 不想 讓 $ 或 ' " @ ..等有起做用 (因為 sql語法關係) 這樣子應該要如何使用
前提是不對命令做任何修改(加\@ \$..等) 因為 要去一個一個改 sql裡有關 ' " @ @ # 有時會有大bug
因為 我試過
="   "
='    '
=qq{ }
=qq(  )

都有問題

$module_Source[2]=
                qq(
                        select owner, tablespace_name "Tablespace", table_name "Table", num_rows, blocks, avg_row_len from dba_tables
                        where tablespace_name <> 'PATROL'
                        and owner not in ('SYS', 'SYSTEM') and num_rows <> 0
                        order by tablespace_name, table_name
                );
這樣子是ok的

多謝指導與指教

是有用 別的方式解決 那個問題了 不過又發現用別的方式所產生的問題
XML::Simple 對 中文字 和 語法內 有 <> 很敏感 會出現

not well-formed (invalid token) at line 150, column 20, byte 5905 at C:/Perl/site/lib/XML/
Parser.pm line 187

原始用法是(用中文字)
        <ROW>
                <README_DOC>
                        Find Lock Status 狀態 <==這邊就是在line 150的地方
                </README_DOC>
                <COMMAND_RUN>
                        SELECT SID, DECODE(BLOCK, 0, 'NO', 'YES') BLOCKER,DECODE(REQUEST, 0, 'NO','YES' ) WAITER
                        FROM V$LOCK WHERE REQUEST > 0 OR BLOCK > 0
                        ORDER BY block DESC
                </COMMAND_RUN>
        </ROW>

用 <> 的方式
        <ROW>
                <COMMAND_RUN>
                        select owner, tablespace_name "Tablespace", table_name "Table", num_rows, blocks, avg_row_len from dba_tables
                        where tablespace_name <> 'PATROL'  <===這裡
                        and owner not in ('SYS', 'SYSTEM') and num_rows <> 0  <===這裡
                        order by tablespace_name, table_name
                </COMMAND_RUN>
        </ROW>

[[i] 本帖最后由 ieting 于 2006-10-5 16:40 编辑 [/i]]

论坛徽章:
0
2 [报告]
发表于 2006-10-05 17:09 |只看该作者

回复 1楼 ieting 的帖子

Hi,

1. using single quotes is right, it will not interprete $, @, %,.. such meta characters.
$module_Source[4] = q(select count(*) from gv$session);
the "  ", qq() or qq{} is double quotes operator, they are some.

2. using CPAN module Encode to deal with chinese coding.

regards, ulmer

论坛徽章:
0
3 [报告]
发表于 2006-10-05 17:56 |只看该作者
thank you

我修改後 test  is very well ...
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP