目前我使用在命令提示符下捕獲PL/SQL過程的RETURN值?
%testvar%=sqlplus usr/[email protected] @test.sql
echo %testvar%
其中test.sql
調用使用BEGIN END
塊的程序,並在名爲x
一個字符串變量保存返回值,現在我還怎麼這命令提示符?
目前我使用在命令提示符下捕獲PL/SQL過程的RETURN值?
%testvar%=sqlplus usr/[email protected] @test.sql
echo %testvar%
其中test.sql
調用使用BEGIN END
塊的程序,並在名爲x
一個字符串變量保存返回值,現在我還怎麼這命令提示符?
過程只能通過OUT參數返回一個值,但函數可以返回一個可以存儲在變量中的值。我不確定你是如何通過一個過程來返回值的,但是如果你寫了一個函數,你似乎試圖做的工作會更好。
事情是這樣的:
sqlplus /NOLOG
SQL> CONNECT user/[email protected]
SQL> SET SERVEROUTPUT ON
SQL> spool /tmp/proc_result.txt
SQL> BEGIN
2 DBMS_OUTPUT.PUT_LINE('hello_world');
3 END;
4 /
hello_world
SQL> spool off
SQL> DISCONNECT
SQL> EXIT
此時要使用shell來讀取值。
我終於用這個,PS我不得不從目錄名稱映射的目錄路徑: 這裏$ 1用戶名/密碼@模式
var=`sqlplus $1 <<+ | grep "Delimeter!*" | sed -n -e '/\[[^]]/s/^[^[]*\[\([^]]*\)].*$/\1/p'
SET SERVEROUT ON
SET ECHO OFF
SET LINESIZE 4000
DECLARE
A VARCHAR2(400);
BEGIN
SELECT directory_path into A from all_directories where directory_name='$input_dir';
dbms_output.put_line('Delimeter! [' || A || ']');
END;
/
exit
+`
注:這些都是`沒有「