2013-08-28 22 views

回答

0

過程只能通過OUT參數返回一個值,但函數可以返回一個可以存儲在變量中的值。我不確定你是如何通過一個過程來返回值的,但是如果你寫了一個函數,你似乎試圖做的工作會更好。

0
  1. DBMS_OUTPUT.PUT_LINE添加到您的程序,並打印出值
  2. 運行的SQL * Plus
  3. 連接到Oracle
  4. 開始滑
  5. 運行過程
  6. 停止滑
  7. 退出來自SQL * Plus
  8. 從文件中讀取值

事情是這樣的:

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來讀取值。

0

我終於用這個,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 
    +` 

注:這些都是`沒有

相關問題