我希望使用jruby填充数据库。我按照here的说明操作,我的更新和查询效果很好。我的问题是数据库的初始人口。初始填充是使用sqlplus调用以下sql脚本完成的:
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会。
我试过了 在文件中读取文本并将其传递给prepare_call / execute_update和execute_query(没有错误 - 表未更新), 在文件中读取文本,将其拆分;并将数组中的每一行传递给prepare_call / execute_update和execute_query(没有错误 - 表未更新), 在主类中创建一个helper调用,其中包含sql文件中的内容,并将其传递给prepare_call / execute_update和execute_query(没有错误 - 表未更新)。
任何想法我做错了或有没有人使用jdbc驱动程序有不同的方法?
A
答案 0 :(得分:0)
其中一种方法是用sql替换pl / sql函数。 然后你就可以直接从JRuby执行纯sql脚本了:
select
to_char(trunc(dbms_random.value(1,power(16, 32))), lpad('x', 32, 'x'))
from dual;
是否有理由不将零包含在随机选择中?