这种情况是我在unix脚本中有一个SQL子句,例如:
sqlplus -s user/pass << END_SQL1 >> outfile.txt
set echo off feedback off heading off tab off;
select .....
from ....
where ...
and ...
and ... ;
END_SQL
如果outfile.txt
不为空,这意味着我从上述SQL中得到了结果,那么我正在运行一个更新SQL,该SQL应该更改某些DB元素。
然后,我需要重用上面相同的SQL,以检查我想要的数据库元素是否确实发生了更改。因此,可以重用此相同的SQL,但稍后无需在脚本中再次包含相同的SQL代码,而是再次运行它,甚至可以将结果放在另一个输出文件中,例如outfile2.txt
吗?
答案 0 :(得分:0)
您可以在脚本内使用RETURNING ... INTO ...
子句
UPDATE myTable
SET col1 = <something1>
WHERE col2 = <something2>
RETURNING col3, col1 INTO v_col3, v_col1;
将结果返回到变量v_col3
和v_col1
中。
答案 1 :(得分:0)
您可以将多毛的SELECT
查询放入文件中,例如select.sql
。然后,每当需要运行SQL时,您都可以执行以下操作:
sqlplus -s user/pass @select.sql >> outfile.txt
您可以根据需要调整输出文件:
sqlplus -s user/pass @select.sql >> outfile2.txt
注意:你说过
如果outfile.txt不为空,则表示我从上述SQL中得到结果
在写入>
时,您可能想使用outfile.txt
:>>
追加到文件,而>
替换它。>