2014-01-07 60 views
1

我試圖在SQL PLus上執行腳本,這很簡單。在SQLPlus上執行腳本時,它會輸出一個數字序列而不是輸出

SET serveroutput ON; 
DECLARE 
    mode NUMBER(1) := 1; 

IF (mode = 1) THEN 

    prompt 'HERE' 

END IF; 

prompt 'fim' 

我使用sqlplus user/[email protected]@myscript.sql連接成功後調用腳本的SQLPlus。但輸出對我來說很奇怪:

Conectado a: 
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production 
With the Partitioning, OLAP and Data Mining options 

SQL> @myscript.sql 
9 
10 
11 

而且它繼續無限期地打印這個序列。 我在做什麼錯?

+0

肯定你得到'here'印刷,沒有別的除非你的腳本中有其他東西。 – SriniV

+0

你在script.sql中有什麼? –

+0

@MaheswaranRavisankar只是這個提示。沒有其他的。 –

回答

6

從你編輯的問題...你必須終止與該PL/SQL塊/在一條新的線上結束並運行,否則SQL * Plus將繼續提示更多行代碼(這是您所看到的數字)。 The documentation shows how to run PL/SQL blocksprompt是一個SQL * Plus命令,所以你不能在PL/SQL塊中使用它。您還沒有你的塊語法正確:

SET serveroutput ON; 
DECLARE 
    mode NUMBER(1) := 1; 
BEGIN 
    IF mode = 1 THEN 
     DBMS_OUTPUT.PUT_LINE('HERE');  
    END IF; 
END; 
/

prompt fim 
+0

它現在工作。謝謝Alex! :) –

+0

@DiogoMoreira - 請閱讀文檔以確保您明白現在爲什麼可行,以及爲什麼您的版本無法正常工作。除了SQL * Plus指南外,您應該看看[PL/SQL語言參考](http://docs.oracle.com/cd/E11882_01/appdev.112/e25519/overview.htm)。 –

+0

我將閱讀SQL * Plus指南! –

3

不能使用在plsql.We SQLPLUS命令可以使用DBMS_OUTPUT來代替,這將顯示SQL輸出提示

SET serveroutput ON; 
DECLARE 
mode NUMBER(1) := 1; 
BEGIN 
IF (mode = 1) THEN 
dbms_output.put_line('HERE'); 
END IF; 
dbms_output.put_line('fim'); 
END; 
/
0

轉到Oracle主Oracle\product\<version>\client_2\sqlplus\admin\glogin.sql並添加以下行,以使全球印刷,

SET ECHO ON; 
SET TERM ON; 
WHENEVER SQLERROR EXIT FAILURE ROLLBACK; 
SET DEFINE OFF; 
+0

我不認爲這解決了實際問題;你的答案將顯示正在執行的內容,但原始帖子的評論回答了問題。 –

相關問題