Oracle11g 插座连接

Oracle11g 插座连接,oracle11g,Oracle11g,我想通过Oracle11g数据库通过套接字将字符串发送到外部显示单元 我推测字符或字符串首先必须转换为十六进制,并且必须在字符串末尾添加校验和(以验证要发送的字符串) 谁能告诉我如何打开套接字连接并发送字符串 谢谢理论上,您可以通过使用Java存储过程来实现这一点-如果您授予自己打开TCP的权限 来自Oracle JVM的套接字。但这样,无论事务结果如何(提交或回滚),数据都将被发送。更好的解决方案是将这些字符串存储在某个队列表中,然后使用一些外部进程将其提取 您还可以使用DBMS_管道 DEC

我想通过Oracle11g数据库通过套接字将字符串发送到外部显示单元 我推测字符或字符串首先必须转换为十六进制,并且必须在字符串末尾添加校验和(以验证要发送的字符串)

谁能告诉我如何打开套接字连接并发送字符串


谢谢

理论上,您可以通过使用Java存储过程来实现这一点-如果您授予自己打开TCP的权限 来自Oracle JVM的套接字。但这样,无论事务结果如何(提交或回滚),数据都将被发送。更好的解决方案是将这些字符串存储在某个队列表中,然后使用一些外部进程将其提取

您还可以使用DBMS_管道

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;