在做oracle脚本向MySQL脚本转换的过程中,遇到如下的一段脚本代码,不知道该如何转换,也不知道该如何下手,请各位指点下-- 创建一个JAVA的存储过程,此存储过程就是在服务器上创建目录CREATE OR REPLACE AND COMPILE JAVA SOURCE NAMED "Gaf_mkdir" AS
import java.io.File;
public  class  Gaf_mkdir
{
  public  static  int  createDir(String mainPath, String libName)
  {
    // 构造完整的文件名称
    String  fullName = mainPath+File.separator+libName;
    
    File  file = new File(fullName);
    // 如果路径已经存在,则直接返回
    if ( file.exists() ) return 1;
    if ( file.mkdir() ) return 1;
    //创建目录失败,返回
    return -1;
  }
}-- 创建一个可以创建目录的函数
CREATE  FUNCTION af_mkdir(mainPath  STRING, libName  STRING)
  RETURNS NUMERIC
  AS LANGUAGE JAVA
  NAME 'Gaf_mkdir.createDir(java.lang.String, java.lang.String) return int';
-- 创建一个可以创建目录的过程
DROP PROCEDURE IF EXISTS paf_mkdir 
CREATE PROCEDURE paf_mkdir(mainPath  VARCHAR(128), libName  VARCHAR(128))
BEGIN
  declare x numeric;
  declare v_af_user varchar(30); select user into v_af_user from dual;
 dbms_java.grant_permission(v_af_user, 'SYS:java.io.FilePermission', CONCAT(mainPath,'/',libName, 'read, write'));
 x := af_MKDIR(mainPath, libName);
END;

解决方案 »

  1.   

    MySQL目前还没那么强大,毕竟ORACLE公司也不可能把MYSQL做到与ORACLE一样。
    MYSQL目前不支持java写的外部存储过程或函数。只能按照同样的算法在MYSQL中写MYSQL的存储过程。如果需要转换,你可以先参考一下MYSQL手册中的存储过程语法说明和例子。 如果你改好的代码仍有科问题,则可以将你自己改的原代码和错误信息一同贴子以供大家分析。
      

  2.   

    哦,好的,我试下吧。我之前搜到的一篇文章:java操作mysql存储过程的例子http://hi.baidu.com/wxmsona/blog/item/994b2fae43351cc67dd92a16.html
    可是关键地方没看懂,而且也没操作成功。我按照老的的说法先试试,有问题的话,再请教大家。
      

  3.   

    刚才跟头儿讨论了下,他说MySQL中不涉及表空间,所以也就不用这么折腾的建目录了,没有。所以这一问题暂时押后。还有一个问题,就是MySQL中
    ACCEPT af_main_path PROMPT "请输入GAFIS 数据库的主目录:"
    语句吗?功能是屏幕输出:请输入GAFIS 数据库的主目录:,然后将输入结果赋给变量af_main_path ?
    看资料时,没找到合适地方法,我该怎么做?是直接设置全局环境变量(觉得这样少功能了),还是别的方法?
      

  4.   

    MYSQL 命令行工具中无此功能直接设置全局变量可以  set @var = 123;
    还有多少问题,请一次性提出。
      

  5.   

    可以使用c实现mysql的外部存储过程。
    只是麻烦点。