从 Oracle Forms 10g WebUtil 执行 SUSE Linux 命令

Posted

技术标签:

【中文标题】从 Oracle Forms 10g WebUtil 执行 SUSE Linux 命令【英文标题】:Executing SUSE Linux commands from Oracle Forms 10g WebUtil 【发布时间】:2019-08-22 13:08:58 【问题描述】:

从我拥有的 Oracle Forms 10g 中,我尝试运行以下命令:

command:='fdisk -l | grep Disk ';

虽然这不会引发任何编译时错误,但似乎没有输出。但是,当我编辑如下相同的命令时,生成结果输出没有问题。

command:='fdisk' ;

我感觉在形成正确的命令字符串以供执行时我可能犯了一个错误。

任何帮助都会非常有帮助。

【问题讨论】:

【参考方案1】:

为了获得硬盘驱动器的数量和每个的容量,我正在寻找使命令起作用:

command:='fdisk -l | grep Disk ';

因为我做不到,所以我认为我需要启动下一个替代方案并编写一些额外的代码来获取我在 Oracle Forms 10g 中想要的信息。对于那些可能遇到类似问题的人来说,这可能会派上用场。以下是经过测试发现返回所需结果的代码部分。

    command:='fdisk -l ';
    process := WEBUTIL_HOST.Blocking(command);
    stnd := WEBUTIL_HOST.Get_Standard_Output(process);


    totalVal :=0;

        If stnd.count >= 1 Then        
        For i in stnd.first .. stnd.last Loop
            if(instr(UPPER(stnd(i)),UPPER('Disk /dev/sd'))>0) Then
            firstPos := instr(stnd(i),'Disk /dev/',1)+length('Disk /dev/sda:')+1;
            nextPos := instr(stnd(i),'GB',1);
            diffPos := nextPos - firstPos;

            extractPos := trim(substr(stnd(i),firstPos,diffPos));
            totalVal := totalVal+to_number(extractPos,'999999.9999999');


            end if; 

    End loop ;

我相信上面的内容可以使用模式匹配条件来完成,如果不是更优雅的话。

【讨论】:

以上是关于从 Oracle Forms 10g WebUtil 执行 SUSE Linux 命令的主要内容,如果未能解决你的问题,请参考以下文章

Oracle Forms 10g 自动查询

Oracle Forms 10g,多次插入和更新不起作用

在 Oracle Forms 10g 中使用 LOV 值过滤数据块

Oracle Forms 10g Tutorial Ebook Download - Oracle Forms Blog

在 Oracle Forms 10g 中动态设置“Copy value from item”的值

oracle forms 10g,运行一个form