為Sybase ASA建立外部預存程序(Java樣本)

來源:互聯網
上載者:User

衡量一個DBMS的功能是否強大,外部預存程序是否很方便建立和使用,是一個重要特徵。

ASA資料庫,很早就開始支援使用C, CLR(.NET)以及java等程式設計語言來建立預存程序。

下面介紹一個簡單的樣本,來建立一個基於Java 的ASA預存程序, 資料庫(ASA11.0或以上版本), 該樣本很簡單,輸入主機名稱,返回對應的IP地址,如果不能解析,返回"".

先編寫一個java類,大致內容如下:


import java.net.InetAddress;
import java.net.UnknownHostException;
public class SUPProcUtils
{
 
    public static String getIPOfHost(String host)
    {
        String resolvedIP = "";
        try
        {
            resolvedIP = InetAddress. getByName(host).getHostAddress();
        }
        catch (UnknownHostException e)
        {
        }
        return resolvedIP;
     
    }
 
    public static void main(String[] args)
    {
        System. out.println(getIPOfHost( "www.bkjia.com"));
    }
}


然後串連目標資料庫,執行下述SQL語句:
1. 指定jvm位置
alter external environment java location 'C:\\shared\\jdk1.6.0_31_x86\\bin\\java.exe'; // 這個主要是指定JVM的位置。

2. 安裝java class

install java new from file 'C:\\Users\\workspace\\test\\bin\\SUPProcUtils.class';

3. 建立預存程序(函數)
create function getIPOfHost(IN hostname CHAR(128)) returns VARCHAR(128)
external name 'SUPProcUtils.getIPOfHost(Ljava/lang/String;)Ljava/lang/String;'
language JAVA;
這裡邊主要要注意的是參數類型以及傳回值班類型,可以使用javap -c <class>得到原型說明。

4.樣本查詢:
select getIPOfHost('xxx.xxx.com');
返回:
100.172.102.173

總體來說,還是非常簡單的。
至於ASA的C預存程序的建立,步驟稍麻煩些,代碼寫起來也稍費時間些,但是C預存程序是最高效的,因為它的執行不需要單獨的JVM或者CLR運行時環境。

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.