2013-02-08 267 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;