ITPub博客

首页 > Linux操作系统 > Linux操作系统 > Oracle中如何直接运行OS命令

Oracle中如何直接运行OS命令

原创 Linux操作系统 作者:qiudan5221 时间:2019-03-05 18:42:04 0 删除 编辑

EXEC SQL WHENEVER SQLERROR CONTINUE;printf("Daemon error while connecting: ");printf("Daemon error while executing: ");printf("%.*s ", msg_length, msg_buffer);EXEC SQL WHENEVER SQLERROR DO sql_error();printf("Will execute system command ’%s’ ", value.arr);

Oracle中如何直接运行OS命令

  EXEC SQL WHENEVER SQLERROR CONTINUE;

  sqlglm(msg_buffer, &buffer_size, &msg_length);

  printf("Daemon error while connecting: ");

  printf("%.*s ", msg_length, msg_buffer);

  printf("Daemon quitting. ");

  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: ");

  printf("%.*s ", msg_length, msg_buffer);

  printf("Daemon continuing. ");

  }

  main()

  {

  EXEC SQL WHENEVER SQLERROR DO connect_error();

  EXEC SQL CONNECT :uid;

  printf("Daemon connected. ");

  EXEC SQL WHENEVER SQLERROR DO sql_error();

  printf("Daemon waiting... ");

  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] = ’’;

  /*如果是stop,该进程就退出*/

  IF (!strcmp((char *) command.arr, "STOP"))

  {

  printf("Daemon exiting. ");

  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] = ’’;

  printf("Will execute system command ’%s’ ", 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;


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/7192804/viewspace-346777/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2019-01-22

  • 博文量
    14
  • 访问量
    12457