网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > 数据库 > Oracle教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
数据库:数据库教程,数据库技巧,Oracle教程,MySQL教程,Sybase教程,Access教程,DB2教程,数据库安全,数据库文摘
本月文章推荐
.oracle里面使用临时表解决表冲突.
.解决Oracle处理中文乱码的一种方.
.一些有用的程式.
.数据库 Oracle 11g 正式发布.
.开发基于Oracle7数据库的管理信息.
.教你学会Script在Oracle中的应用.
.终于知道什么叫做constraint了。.
.Oracle--树的使用(Connect By).
.ORACLE10g的新特性-簡化你的工作.
.如何释放过度占用的Shrink Undo表.
.实例讲解"Oracle"数据库的分页显.
.DNS配置问答集.
.EMC存储技术上使用ASM的最佳实践.
.两个有用的oracle数据库运算:in.
.Linux 上的邮件网关(杀病毒)An.
.[Oracle]如何在亿级记录表中创建.
.自己整理的OCI文档,抛砖引玉.
.Oracle初学点滴-(2)-OracleOraHo.
.数据库开发者常犯的十大错误,你.
.Oracle简化企业网格运算环境管理.

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

发表日期:2008-2-9


  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;    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预编译:    proc iname=daemon.pc userid=用户名/密码@服务名 sqlcheck=semantics 
  得到daemon.c,在用c进行编译,注重在NT上要把orasql8.lib加上,否则编译通过,连接没法通过。    3、在服务器上运行daemon.exe    4、在sqlplus运行测试语句:    SQL> variable rv number 
  SQL> execute :rv := DAEMON.EXECUTE_SYSTEM('ls -la');
  PL/SQL 过程已成功完成。 
  SQL> execute :rv := DAEMON.EXECUTE_SYSTEM('dir');
  PL/SQL 过程已成功完成。 
  SQL>    DBMS_PIPE的用法见Oracle的文档。
上一篇:Oracle数据备份与恢复 人气:698
下一篇:Oracle命中率查询,SGA调优 人气:798
浏览全部Oracle教程的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐