我正在尝试编写一个sqlplus命令,该命令根据存储在.sql文件中的查询创建一个表.
包含查询的特定.sql文件将作为变量(&v_InputQuery
)提供给我的sqlplus命令.
我尝试过类似的东西,但它不起作用.
CREATE TABLE &v_OutputTable AS
(
< &v_InputQuery
)
;
Run Code Online (Sandbox Code Playgroud)
我收到一条错误消息,说明缺少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
!
Run Code Online (Sandbox Code Playgroud)
执行以下脚本(取决于操作系统)
ksh my_script MY_OUTPUT_TABLE my_sql.sql;
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1773 次 |
最近记录: |