2017-04-20 125 views
0

我正在寻找使用jruby填充数据库。我按照指示here,我有更新和查询工作很好。我的问题是数据库的初始人口。使用JRuby与Oracle数据库填充数据库

CREATE OR REPLACE FUNCTION createLcid RETURN varchar2 IS 
    hexval varchar2(64); 
    digit number; 
    hexdigit char; 
BEGIN 
    FOR i IN 1..32 loop 
    digit := TRUNC(DBMS_RANDOM.value(1,16)); 
    if digit > 9 then 
     hexdigit := chr(ascii('a') + digit - 10); 
    else 
     hexdigit := to_char(digit); 
    end if; 
    hexval := hexval || hexdigit; 
    end loop; 
    return hexval; 
END createLcid; 
/

BEGIN 
    FOR i IN 1..50 LOOP 
     INSERT INTO as_dcm_testing VALUES (createLcid(), to_char(systimestamp, 'YYYY-MM-DD HH24:MI:SS.FF1'), TRUNC(DBMS_RANDOM.value(100000,999999999)), 'VL' || to_char(TRUNC(DBMS_RANDOM.value(1,9)))); 
    END LOOP; 
    COMMIT; 
END; 
/

PROMPT Complete 
PROMPT ************************************************************************* 

EXIT; 

我想用一个OracleConnection调用来替换sqlplus的调用如文档中,但作为运行prepare_call或execute_query作为例子似乎并不:初始种群用sqlplus调用下面的SQL脚本来完成更新表格。运行sqlplus的确如此。

我试图 读取文件的文本,并把它传递给prepare_call/execute_update和execute_query(没有错误 - 表未更新), 读取文件为文本中,它分裂的;并将数组中的每一行传递给prepare_call/execute_update和execute_query(没有错误 - 表未更新), 在主类中创建一个辅助调用,将其中的sql文件的内容传递给prepare_call/execute_update和execute_query(没有错误 - 表没有更新)。

任何想法我做错了或有任何人有不同的方法使用jdbc驱动程序?

A

回答

0

其中一种方法是用sql替换你的pl/sql函数。 然后你就可以直接从JRuby的在一个循环中执行纯SQL脚本:

select 
    to_char(trunc(dbms_random.value(1,power(16, 32))), lpad('x', 32, 'x')) 
from dual; 

是否有不包括零到随便挑一个原因吗?