2013-02-08 268 views
0

我想通過套接字通過oracle 11g數據庫發送一個字符串到外部顯示單元 我得知字符或字符串必須先轉換爲十六進制,並且在字符串結尾必須有校驗和是addead(驗證要發送的字符串)套接字連接

誰能告訴我一個套接字連接可以打開並且可以發送一個字符串嗎?

謝謝

回答

0

理論上你可以使用Java存儲過程實現這一點 - 如果您授予自己私法打開從Oracle JVM TCP套接字。但是這樣數據將被髮送,而不管事務結果(提交還是回滾)。更好的解決方案是將這些字符串存儲在某個隊列表中,然後使用某個外部進程撤回它們。

您也可以使用DBMS_PIPE。

2
DECLARE 
    bt_conn  UTL_TCP.connection; 
    retval  BINARY_INTEGER; 
    l_sequence VARCHAR2 (50) := '@0100010303000118000201001401000201'; --string to be sent 
BEGIN 
    bt_conn := 
     UTL_TCP.open_connection (remote_host => '127.0.0.1', --IP of socket to be opened 
           remote_port => 26665, -- port number of socket 
           tx_timeout => 15); 
    DBMS_LOCK.SLEEP(1); -- this is to ensure a slight pause once opening the connection before --sending the string 
    retval := UTL_TCP.write_line (bt_conn, l_sequence); 
    UTL_TCP.flush (bt_conn); 
    UTL_TCP.close_connection (bt_conn); 
EXCEPTION 
    WHEN OTHERS 
    THEN 
     raise_application_error (-20101, SQLERRM); 
     UTL_TCP.close_connection (bt_conn); 
end;