gpt4 book ai didi

oracle - 从 java 应用程序运行 oracle 命令脚本文件

转载 作者:行者123 更新时间:2023-12-01 12:53:52 25 4
gpt4 key购买 nike

我有一个带有oracle数据库的应用程序,因此应用程序的安装需要运行一些oracle命令脚本文件来创建数据库并执行一些DDL操作。这些操作包括一些表空间创建、模式定义等。

我试图使用java应用程序准备一个安装向导。该向导需要运行这些命令。我的具体问题是:如何从我的 java 应用程序内部运行 oracle 命令脚本文件?我确实需要一个java函数,它将sql命令文件路径作为输入参数,并从java执行脚本文件中的命令,考虑到一些参数(例如一些用户选择的名称)必须传递到脚本文件要执行的内容

我曾经使用 PL/SQL 命令行功能以特权用户身份执行 sql 命令。

这里是文件的一部分作为示例

ACCEPT TS_NAME CHAR PROMPT 'Enter Table Space Name : ' 
ACCEPT DB_DATAFILE CHAR PROMPT 'Enter DataBase File full path : '
ACCEPT DB_SIZE NUMBER PROMPT 'Enter DataBase File Size (MB) : '
ACCEPT DB_USER CHAR PROMPT 'Enter User Name : '
ACCEPT DB_PASS CHAR PROMPT 'Enter Table Password Name: ' HIDE
ACCEPT DB_TNSNAME CHAR PROMPT 'Enter DATABASE TNSNAME:'
ACCEPT DB_LOG_PATH CHAR PROMPT 'Enter Log File Path : '
PROMPT Create Tablespace
pause Press Return to continue ...
CREATE TABLESPACE &TS_NAME DATAFILE '&DB_DATAFILE' SIZE &DB_SIZE M
AUTOEXTEND ON NEXT 1M MAXSIZE UNLIMITED LOGGING PERMANENT
EXTENT MANAGEMENT LOCAL AUTOALLOCATE BLOCKSIZE 8K SEGMENT SPACE MANAGEMENT MANUAL;
PROMPT Create User
pause Press Return to continue ...
CREATE USER &DB_USER IDENTIFIED BY &DB_PASS DEFAULT TABLESPACE &TS_NAME PROFILE DEFAULT
QUOTA UNLIMITED ON USERS;
COMMIT;
GRANT CONNECT TO &DB_USER;
GRANT RESOURCE TO &DB_USER;
COMMIT;

最佳答案

我首先要纠正你的问题中的一些内容,该片段不是 PL/SQL,而是 sqlplus 的客户端扩展,而且你在 DDL 之后“提交”时犯了一个错误,你不需要像 DDL 那样这样做不属于交易的一部分。

我认为最好的方法是转换为实际的 PL/SQL,例如一个过程:

    create procedure create_user(ts_name in varchar, db_datafile in varchar, db_size in varchar, db_user in varchar, 
db_pass in varchar, db_tnsname in varchar, db_log_path in varchar)
is
begin
execute immediate 'CREATE TABLESPACE '||TS_NAME||' DATAFILE '|| db_datafile ||' SIZE ' ||db_size||'M'||
'AUTOEXTEND ON NEXT 1M MAXSIZE UNLIMITED LOGGING PERMANENT '||
'EXTENT MANAGEMENT LOCAL AUTOALLOCATE BLOCKSIZE 8K SEGMENT SPACE MANAGEMENT MANUAL';

execute immediate 'CREATE USER '||DB_USER||' IDENTIFIED BY '||DB_PASS||' DEFAULT TABLESPACE '||TS_NAME||' PROFILE DEFAULT QUOTA UNLIMITED ON USERS';

execute immediate 'grant connect, resource to '||db_user;

end;

/

然后从java中调用带有适当参数的程序,当然你应该检查所有语句的结果,我的只是一个示例,需要通过错误检查进行测试和完成。

关于oracle - 从 java 应用程序运行 oracle 命令脚本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24029735/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com