| EXEC SQL WHENEVER SQLERROR CONTINUE; sqlglm(msg_buffer, &buffer_size, &msg_length); printf("Daemon error while connecting:n"); printf("%.*sn", msg_length, msg_buffer); printf("Daemon quitting.n"); exit(1); } void EXEC SQL WHENEVER SQLERROR CONTINUE; EXEC SQL WHENEVER SQLERROR DO sql_error(); ELSE IF (!strcmp((char *) command.arr, "SYSTEM")) |
| IF (status) { printf ("Daemon error while responding to system command."); printf(" status: %dn", status); } } ELSE { printf ("Daemon error: invalid command '%s' received.n", command.arr); } } ELSE { printf("Daemon error while waiting for signal."); printf(" status = %dn", status); } } EXEC SQL COMMIT WORK RELEASE; exit(0); } 以上代码起名为daemon.pc,用proc预编译: proc iname=daemon.pc userid=用户名/密码@服务名 sqlcheck=semantics 得到daemon.c,在用c进行编译,注意在NT上要把orasql8.lib加上,否则编译通过,连接没法通过。 3、在服务器上运行daemon.exe 4、在sqlplus运行测试语句: SQL> variable rv number DBMS_PIPE的用法见oracle的文档。 |