除非确实有必要,否则我不会使用程序.
如果您使用SQL Plustest.sqlSET调用脚本,只需将以下内容放入您的脚本中(s来自SQL Plus FAQ以消除噪音):
SET ECHO OFF
SET NEWPAGE 0
SET SPACE 0
SET PAGESIZE 0
SET FEEDBACK OFF
SET HEADING OFF
SET TRIMSPOOL ON
SET TAB OFF
Select owner || ';' || object_name
From all_objects;
QUIT
Run Code Online (Sandbox Code Playgroud)
并将输出重定向到文件(test.txt):
sqlplus user/passwd@instance @ test.sql > test.txt
Run Code Online (Sandbox Code Playgroud)
如果你真的需要在PL/SQL中做一些事情,可以考虑把它放到一个函数中并按照记录调用它:
Create Or Replace Function calculate_my_row( in_some_data In Varchar2 )
Return Varchar2
As
Begin
Return in_some_data || 'something-complicated';
End calculate_my_row;
Run Code Online (Sandbox Code Playgroud)
呼叫:
Select owner || ';' || calculate_my_row( object_name )
From all_objects;
Run Code Online (Sandbox Code Playgroud)
性能可能会受到影响,但应该会有效.但要确保,你尝试的东西不能以纯粹的方式完成SQL.
阅读你的评论我认为分析功能Lag是你需要的.
*如果值val已更改,则附加此示例:
With x As (
Select 1 id, 'A' val FROM dual
Union Select 2 id, 'A' val FROM dual
Union Select 3 id, 'B' val FROM dual
Union Select 4 id, 'B' val FROM dual
)
--# End of test-data
Select
id,
val,
Case When ( val <> prev_val Or prev_val Is Null ) Then '*' End As changed
From (
Select id, val, Lag( val ) Over ( Order By id ) As prev_val
From x
)
Order By id
Run Code Online (Sandbox Code Playgroud)
返回
ID V C
---------- - -
1 A *
2 A
3 B *
4 B
Run Code Online (Sandbox Code Playgroud)