Oracleからのシェルの呼び出しの記事を読んだ後 
      
        
        
        
      
    
      
        
        
        
      
     この問題の解決策を共有することにしました。  Javaは問題の解決に使用されるため、このソリューションはOracle XEでは機能しません。 
      
        
        
        
      
    
      
        
        
        
      
     しかし、このソリューションはクロスプラットフォームです-私が遭遇したすべてのOSで動作します。 
      
        
        
        
      
     また、DBMS_OUTPUTで外部コマンドの結果を確認できます。 
      
        
        
        
      
    
      
        
        
        
      
     実装に進みましょう。 
      
        
        
        
      
    
      
        
        
        
      
     ステップ1:それに基づいてJavaソースを作成します。 
      
        
        
        
      
    
      
        
        
        
      
      import java.lang。*; 
      
        
        
        
      
      import java.io. *; 
      
        
        
        
      
      import java.sql.SQLException; 
      
        
        
        
      
    
      
        
        
        
      
      パブリッククラスHost { 
      
        
        
        
      
    
      
        
        
        
      
      public static void executeCommand(文字列コマンド)はSQLException、IOExceptionをスローします 
      
        
        
        
      
      { 
      
        
        
        
      
      #sql { 
      
        
        
        
      
      始める 
      
        
        
        
      
      DBMS_JAVA.set_output(10000000); 
      
        
        
        
      
      終わり; 
      
        
        
        
      
      }; 
      
        
        
        
      
      文字列uFullCommand = "";  文字列nameOS = System.getProperty( "os.name"); 
      
        
        
        
      
    
      
        
        
        
      
      if((nameOS.toLowerCase())。indexOf( "lin")!= -1) 
      
        
        
        
      
      { 
      
        
        
        
      
      uFullCommand = "/ bin / sh" + "-c" + command; 
      
        
        
        
      
      } 
      
        
        
        
      
      else if((nameOS.toLowerCase())。indexOf( "win")!= -1) 
      
        
        
        
      
      { 
      
        
        
        
      
      uFullCommand = "%systemroot%\\ system32 \\ cmd.exe" + "/ y" + "/ c" +コマンド。 
      
        
        
        
      
      } 
      
        
        
        
      
      else if((nameOS.toLowerCase())。indexOf( "nix")!= -1) 
      
        
        
        
      
      { 
      
        
        
        
      
      uFullCommand =コマンド; 
      
        
        
        
      
      } 
      
        
        
        
      
      他に 
      
        
        
        
      
      { 
      
        
        
        
      
      uFullCommand =コマンド; 
      
        
        
        
      
      } 
      
        
        
        
      
    
      
        
        
        
      
      ランタイムrt = Runtime.getRuntime(); 
      
        
        
        
      
      プロセスp = rt.exec(uFullCommand); 
      
        
        
        
      
      BufferedReader in = new BufferedReader(新しいInputStreamReader(p.getInputStream())); 
      
        
        
        
      
    
      
        
        
        
      
      文字列line = null; 
      
        
        
        
      
      while((line = in.readLine())!= null) 
      
        
        
        
      
      { 
      
        
        
        
      
      System.out.println(行); 
      
        
        
        
      
      } 
      
        
        
        
      
      } 
      
        
        
        
      
      }; 
      
        
        
        
      
    
      
        
        
        
      
     ステップ2:PL / SQLでラップします。 
      
        
        
        
      
    
      
        
        
        
      
      作成または置換 
      
        
        
        
      
      PROCEDURE host_command_proc(p_command IN VARCHAR2)AS 
      
        
        
        
      
      言語JAVA 
      
        
        
        
      
      NAME 'Host.executeCommand(java.lang.String)'; 
      
        
        
        
      
      / 
      
        
        
        
      
    
      
        
        
        
      
     呼び出し例: 
      
        
        
        
      
    
      
        
        
        
      
      始める 
      
        
        
        
      
      host_command_proc( "ls / tmp"); 
      
        
        
        
      
      終わり; 
      
        
        
        
      
    
      
        
        
        
      
     そして、はい、このソリューションのアイデアはTom Kiteから借りたものです。