我想通过 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 存储过程来实现这一点 - 如果您授予自己 priv 从 Oracle JVM 打开 TCP 套接字。但是这种方式无论事务结果如何(提交或回滚)都会发送数据。更好的解决方案是将这些字符串存储在一些队列表中,然后使用一些外部进程将它们撤回。
您也可以使用 DBMS_PIPE。