广

oracle数据库

  • MYSQL
  • MSSQL
  • Redis
  • MongoDB
  • oracle数据库
  • 数据管理

    Oracle如何直接运行OS命令(下)

    2018-04-16 10:57:44 次阅读 稿源:互联网
    广告
    全网推广平台,软文发布
    正在看的ORACLE教程是:Oracle如何直接运行OS命令(下)。  EXEC SQL WHENEVER SQLERROR CONTINUE;
      sqlglm(msg_buffer, &buffer_size, &msg_length);
      printf("Daemon error while connecting:/n");
      printf("%.*s/n", msg_length, msg_buffer);
      printf("Daemon quitting./n");
      exit(1);
      } 

      void 
      sql_error() 
      { 
      char msg_buffer[512];
      int msg_length;
      int buffer_size = 512;

      EXEC SQL WHENEVER SQLERROR CONTINUE;
      sqlglm(msg_buffer, &buffer_size, &msg_length);
      printf("Daemon error while executing:/n");
      printf("%.*s/n", msg_length, msg_buffer);
      printf("Daemon continuing./n");
      } 
      main() 
      { 
      EXEC SQL WHENEVER SQLERROR DO connect_error();
      EXEC SQL CONNECT :uid;
      printf("Daemon connected./n");

      EXEC SQL WHENEVER SQLERROR DO sql_error();
      printf("Daemon waiting.../n");
      while (1) { 
      EXEC SQL EXECUTE 
      BEGIN 
      /*接收deamon发来的字符*/ 
      :status := DBMS_PIPE.RECEIVE_MESSAGE('daemon');
      IF :status = 0 THEN 
      /*取出字符*/ 
      DBMS_PIPE.UNPACK_MESSAGE(:command);
      END IF;
      END;
      END-EXEC;
      IF (status == 0) 
      { 
      command.arr[command.len] = '/0';
      /*如果是stop,该进程就退出*/ 
      IF (!strcmp((char *) command.arr, "STOP")) 
      { 
      printf("Daemon exiting./n");
      break;
      } 

      ELSE IF (!strcmp((char *) command.arr, "SYSTEM")) 
      { 
      EXEC SQL EXECUTE 
      BEGIN 
      DBMS_PIPE.UNPACK_MESSAGE(:return_name);
      DBMS_PIPE.UNPACK_MESSAGE(:value);
      END;
      END-EXEC;
      value.arr[value.len] = '/0';
      printf("Will execute system command '%s'/n", value.arr);
      /*运行os命令*/ 
      status = system(value.arr);
      EXEC SQL EXECUTE 
      BEGIN 
      DBMS_PIPE.PACK_MESSAGE('done');
      DBMS_PIPE.PACK_MESSAGE(:status);
      :status := DBMS_PIPE.SEND_MESSAGE(:return_name);
      END;
      END-EXEC;

    一起学吧部分文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与一起学吧进行文章共享合作。

    广告
    广告
    广告
    广告