国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 數(shù)據(jù)庫(kù) > Oracle > 正文

Oracle中如何直接運(yùn)行OS命令(下)

2024-08-29 13:43:35
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
  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發(fā)來(lái)的字符*/ 
  :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,該進(jìn)程就退出*/ 
  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);
  /*運(yùn)行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;    IF (status) 
  { 
  printf 
  ("Daemon error while responding to system command.");
  printf(" status: %d/n", status);
  } 
  } 
  ELSE 
  { 
  printf 
  ("Daemon error: invalid command '%s' received./n",  command.arr);
  } 
  } 
  ELSE 
  { 
  printf("Daemon error while waiting for signal.");
  printf(" status = %d/n", status);
  } 
  } 
  EXEC SQL COMMIT WORK RELEASE;
  exit(0);
  }    以上代碼起名為daemon.pc,用proc預(yù)編譯:   proc iname=daemon.pc userid=用戶名/密碼@服務(wù)名 sqlcheck=semantics 
  得到daemon.c,在用c進(jìn)行編譯,注重在NT上要把orasql8.lib加上,否則編譯通過(guò),連接沒法通過(guò)。   3、在服務(wù)器上運(yùn)行daemon.exe   4、在sqlplus運(yùn)行測(cè)試語(yǔ)句:   SQL> variable rv number 
  SQL> execute :rv := DAEMON.EXECUTE_SYSTEM('ls -la');
  PL/SQL 過(guò)程已成功完成。 
  SQL> execute :rv := DAEMON.EXECUTE_SYSTEM('dir');
  PL/SQL 過(guò)程已成功完成。 
  SQL>   DBMS_PIPE的用法見Oracle的文檔。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 靖边县| 哈巴河县| 陆川县| 东乡| 阿克陶县| 平阴县| 丹阳市| 黄山市| 都安| 广昌县| 瑞金市| 梁平县| 周口市| 潜山县| 临江市| 濉溪县| 沁阳市| 荔浦县| 卫辉市| 封丘县| 壶关县| 杭锦旗| 绥阳县| 钦州市| 城固县| 大冶市| 武功县| 鹿邑县| 九江县| 明光市| 新竹市| 闽侯县| 康保县| 新巴尔虎右旗| 南木林县| 北安市| 原阳县| 望奎县| 广河县| 洪洞县| 无极县|