我想通過套接字通過oracle 11g數據庫發送一個字符串到外部顯示單元 我得知字符或字符串必須先轉換爲十六進制,並且在字符串結尾必須有校驗和是addead(驗證要發送的字符串)套接字連接
誰能告訴我一個套接字連接可以打開並且可以發送一個字符串嗎?
謝謝
我想通過套接字通過oracle 11g數據庫發送一個字符串到外部顯示單元 我得知字符或字符串必須先轉換爲十六進制,並且在字符串結尾必須有校驗和是addead(驗證要發送的字符串)套接字連接
誰能告訴我一個套接字連接可以打開並且可以發送一個字符串嗎?
謝謝
理論上你可以使用Java存儲過程實現這一點 - 如果您授予自己私法打開從Oracle JVM TCP套接字。但是這樣數據將被髮送,而不管事務結果(提交還是回滾)。更好的解決方案是將這些字符串存儲在某個隊列表中,然後使用某個外部進程撤回它們。
您也可以使用DBMS_PIPE。
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;