• 网络学院
  • 新手学堂
  • 操作系统
  • 网络技术
  • 软件应用
  • 办公软件
  • 编程技术
  • 网站架设
  • 数据库类
  • 平面设计
  • 多媒体类
  • 游戏资讯
  • 教学论文
  • 认证考试
Oracle中如何直接运行OS命令(下)
广告位
  站点:
  • 首 页
  • 最新软件
  • 最新文章
  • 国内软件
  • 国外软件
  • 汉化软件
  • 源码下载
  • 字体下载
Oracle中如何直接运行OS命令(下)
软件发布 Oracle中如何直接运行OS命令(下)
网络软件 系统工具 应用软件 联络聊天 图形图像 多媒体类 行业软件 游戏娱乐 编程开发 安全相关 教育教学 数码软件
热门软件: QQ 瑞星 pplive e话通 木马克星 千千静听 office2000 五笔字根 Photoshop 视频分割
返回首页 | 文章首页 | 认证考试 | Oracle认证 | Oracle指导 | Oracle中如何直接运行OS命令(下)

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

 

添加时间: 2008-4-20 21:53:20  作者: Oracle指导  阅读次数:12   来源: http://www.d9soft.com

 

 

       

  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);
#p# /*运行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;

[page]
IF (status)
{
printf
("Daemon error while responding to system command.");
printf(" status: %d ", status);
}
}
ELSE
{
printf
("Daemon error: invalid command ’%s’ received. ", command.arr);
}
}
ELSE
{
printf("Daemon error while waiting for signal.");
printf(" status = %d ", 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的索引 下一篇文章: Oracle 数据对象分析

相关文章:

  • 教你如何向Google申请重新收录
  • 在ORACLE的存储过程中如何做简单的动态查询
  • Oracle下调数据库许可价格以适应多芯CPU
  • Oracle全球客户支持副总裁汤姆·舒尔滋演讲
  • Oracle中国前员工述说公司高层内部纷争史

相关软件:

  • 易命令 V1.0
  • OptionsOracle V1.3.1
  • 命令与征服(COMMAND & CONQUER) 1 英文硬盘版
  • DOS常用命令宝典-电子书
  • Oracle 8 故障解决手册(PDF)
  • Oracle WebServer 中文手册(CHM)

 

 

快速导航

  • 网络学院
  • 精品汇聚
  • 字体下载
  • 教程下载
  • ASP源码
  • PHP源码
  • Net源码
  • JSP 源码

Oracle认证分类导航

  • Oracle动态
  • Oracle指导
  • Oracle题库

本类经典文章推荐

  • Oracle中关于逻辑备份与恢复
  • Oracle开发人员JAVA存储过程
  • 为数据库的表自动生成行号
  • Oracle中的OOP概念
  • 用java从oracle取数
  • 冷备份移植到另一台Solaris机器上
  • 如何将excel数据导入oracle中
  • Oracle10.2g安装记录
  • 数据库监控工具ForOraclev1.2
  • oracle双机群集系统

Oracle指导阅读排行

  • Oracle系统表查询
  • 实例:Oracle导出EXCEL文件
  • Oracle企业管理器(OEM 2.1)使用...
  • 实例:Oracle导出EXCEL文件
  • Tomcat+SQLServer连接池配置
  • 服务器和客户机是怎样连接的
  • 入门基础:连接常见错误及解决方法
  • ORACLE数据库简介
  • 如何将excel数据导入oracle中
  • 如何取出某一用户的密码 再原样改...

Oracle认证阅读总排行

  • Oracle系统表查询
  • 实例:Oracle导出EXCEL文件
  • Oracle企业管理器(OEM 2.1)使用...
  • 在ORACLE的存储过程中如何做简单的...
  • 实例:Oracle导出EXCEL文件
  • AIX下自动启动Oracle数据库与监听...
  • Tomcat+SQLServer连接池配置
  • 服务器和客户机是怎样连接的
  • 入门基础:连接常见错误及解决方法
  • ORACLE数据库简介

广告位置

字母检索 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 回到顶部

关于我们 | 版权声明 | 免责条款 | 广告联系 | 软件发布 | 下载帮助 | 下载排行 | 网站地图 | 特别鸣谢 | 友情连接

copyright; 2005-2008 D9soft.com 第九软件网 版权所有