Oracle 11g データベースを介して外部ディスプレイ ユニットにソケット経由で文字列を送信したいと思います送信する文字列)
ソケット接続を開き、文字列を送信する方法を誰か教えてもらえますか?
ありがとうございました
Oracle 11g データベースを介して外部ディスプレイ ユニットにソケット経由で文字列を送信したいと思います送信する文字列)
ソケット接続を開き、文字列を送信する方法を誰か教えてもらえますか?
ありがとうございました
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;
理論的には、Javaストアドプロシージャを使用してこれを実現できます-Oracle JVMからTCPソケットを開く権限を自分自身に付与する場合。ただし、この方法では、トランザクションの結果 (コミットまたはロールバック) に関係なく、データが送信されます。より良い解決策は、これらの文字列を何らかのキュー テーブルに格納してから、何らかの外部プロセスを使用してそれらを撤回することです。
DBMS_PIPE も使用できます。