oracle – 将文件内容作为参数传递给Sql * Plus命令

我正在尝试编写一个sqlplus命令,该命令根据存储在.sql文件中的查询创建一个表.

包含查询的特定.sql文件将作为变量(& v_InputQuery)提供给我的sqlplus命令.

我尝试过类似的东西,但它不起作用.

CREATE TABLE &v_OutputTable AS
(
< &v_InputQuery
)
;

我收到一条错误消息,说明缺少SELECT关键字.

我真正喜欢的是& v_InputQuery不能替换为用户指定的文件名,而是替换文件的实际内容.有没有办法做到这一点?

非常感谢你.

解决方法

不幸的是,您不能创建sql * Plus命令,而是创建一个shell脚本来执行它!

让我们说my_script.sh在下面

#you can always complete the user interaction at unix/dos
USER=your_user
PASS=your_pass
DB=your_db
OUTPUT_TABLE=$1;
QUERY_FILE=$2;
SELECT_QUERY=`cat $QUERY_FILE`;

sqlplus -S ${USER}/${PASS}@${DB} << !
SET SERVEROUTPUT ON;
VAR EXITCODE NUMBER;

BEGIN
   EXECUTE IMMEDIATE ' CREATE TABLE $OUTPUT_TABLE AS $SELECT_QUERY ';
   :EXITCODE := sqlCODE;
EXCEPTION
WHEN OTHERS THEN
   DBMS_OUTPUT.PUT_LINE(sqlERRM);
   :EXITCODE := sqlCODE;
END;
/

exit :EXITCODE
!

执行如下脚本(取决于操作系统)

ksh my_script MY_OUTPUT_TABLE my_sql.sql;

相关文章

Java Oracle 结果集是Java语言中处理数据库查询结果的一种方...
Java AES和Oracle AES是现代加密技术中最常使用的两种AES加密...
Java是一种广泛应用的编程语言,具备可靠性、安全性、跨平台...
随着移动互联网的发展,抽奖活动成为了营销活动中不可或缺的...
Java和Oracle都是在计算机领域应用非常广泛的技术,他们经常...
Java 是一门非常流行的编程语言,它可以运行于各种操作系统上...