SAP Sybase ASA SQL語句直接生成HTML結果

在ASA數據庫中,output, input子句並不能直接用於SQL語句中,只能用於isql交互命令行裏。因此要在存儲過程或者程序裏生成html格式的結果,還需要自己實現,但也不難。

如:

select * from t

得到結果:

id,col2
1,'中國'
2,'spring'

輸出爲html格式:
select * from t ; 
output to "a.html" format HTML;

  • 執行時間: 0.016 秒
  • 正在將數據導出到 "D:\asa120\BIN32\a.html"
  • 2 行已寫入 "D:\asa120\BIN32\a.html" 
a.html內容爲:

<html>
<head>
<META content="text/html;charset=GBK">
</head>
<body>
<table border>
<tr><th>id</th><th>col2</th></tr>
<tr><td>1</td><td>中國</td></tr>

<tr><td>2</td><td>spring</td></tr>

</table>
</body>
</html>

我們可以用SQL語句爲之生成這樣的結果:

select xmlelement(name "html",
            (xmlelement (name "body", 
            xmlelement(name "thead",
             xmlelement(name "tr",
                xmlelement(name "th",  'id'),
                xmlelement(name "th", 'col2')
             )
            ),
        xmlelement(name "tbody",
            xmlagg( xmlelement (name "tr",
                       xmlelement(name "td", id),
                       xmlelement(name "td", col2)
                   )))))
) from t;


結果是這樣的:

<html><body><thead><tr><th>id</th><th>col2</th></tr></thead><tbody><tr><td>1</td><td>中國</td></tr><tr><td>2</td><td>spring</td></tr></tbody></body></html>
這個結果並沒有輸出html文件的head, META等信息,下邊是一個完整的sql:

select xmlelement(name "html",
            xmlelement (name "head", 
                xmlelement(name "title", 't錶轉換'),
                xmlelement(name "META", xmlattributes('Content-Type' as "http-equiv" , 'text/html;charset=GBK' as "content"))
            ),
            (xmlelement (name "body", 
                xmlelement(name "thead",
                    xmlelement(name "tr",
                    xmlelement(name "th",  'id'),
                    xmlelement(name "th", 'col2')
                )
                ),
                xmlelement(name "tbody",
                    xmlagg( xmlelement (name "tr",
                       xmlelement(name "td", id),
                       xmlelement(name "td", col2)
                    )))))
) from t;


得到的html內容如下:

<html>
  <head>
    <title>t錶轉換</title>
    <META http-equiv="Content-Type"
    content="text/html;charset=GBK" />
  </head>
  <body>
    <thead>
      <tr>
        <th>id</th>
        <th>col2</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td>1</td>
        <td>中國</td>
      </tr>
      <tr>
        <td>2</td>
        <td>spring</td>
      </tr>
    </tbody>
  </body>
</html>

仔細一看,上邊的結果少了<table border="1">.....</table>

加上xmlelement(name "table", xmlattributes('1' as "border")),即可

完整的sql如下:

select xmlelement(name "html",    
            xmlelement (name "head",     
                xmlelement(name "title", 't錶轉換'),    
                xmlelement(name "META", xmlattributes('Content-Type' as "http-equiv" , 'text/html;charset=GBK' as "content"))    
            ),    
            (xmlelement (name "body",  
                xmlelement(name "table", xmlattributes('1' as "border"),      
                    xmlelement(name "thead",    
                        xmlelement(name "tr",    
                        xmlelement(name "th",  'id'),    
                        xmlelement(name "th", 'col2')    
                        )    
                    ),    
                    xmlelement(name "tbody",    
                        xmlagg( xmlelement (name "tr",    
                           xmlelement(name "td", id),    
                           xmlelement(name "td", col2)    
                                )  
                               )  
                           )  
                    )
                )  
            )   
) from t;    


最終得到的結果如下:

<html>
  <head>
    <title>t錶轉換</title>
    <META http-equiv="Content-Type"
    content="text/html;charset=GBK" />
  </head>
  <body>
    <table border="1" >
    <thead>
      <tr>
        <th>id</th>
        <th>col2</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td>1</td>
        <td>中國</td>
      </tr>
      <tr>
        <td>2</td>
        <td>spring</td>
      </tr>
    </tbody>
   </table>
  </body>
</html>




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章