2012-01-19 78 views
0

今天我在sqlplus,oracle 10.2中執行sql文件中的DML語句,發現一些奇怪的東西,其實是一個問題「輸入漢堡包的值:」。請參閱附件imageSQLPlus在DML語句執行期間的奇怪反應

問題結束「輸入值爲XXX」保持間隔變化。我的意思是幾秒鐘後,我發現聲明「爲麥當勞輸入值」...

我想知道是否正常與sqlplus?

我試圖通過在sqlplus中提供sql文件的位置來執行DML語句。

SQL> @/tmp/myDir/dmls.sql;

從SQL文件的示範性陳述

Insert into MYSCHEMA.MYTABLE (ID,DIX_DIR_ID,DIX_AGL,DIX_XML_INLINE) values (23202,1100080319000620471,'directory','<values> 
<dir_class_title>Person</dir_class_title> 
</values> 
'); 
+0

你的SQL語句是什麼樣的?你能告訴我們dmls.sql的內容嗎? – migu

回答

2

你肯定有你的語句中的符號。

當SQL * Plus遇到&符時,它會嘗試用它定義的內容替換它。如果它是不確定的,它會提示輸入一個值:

這是一個沒有符號一個statment:

SQL> select 'foo' from dual; 
'FO 
--- 
foo 

現在,用符號另一個語句。爲foo值(還)沒有定義,所以它會提示一個:現在

SQL> select '&foo' from dual; 
Enter value for foo: bla 
old 1: select '&foo' from dual 
new 1: select 'bla' from dual 

'BL 
--- 
bla 

foo被定義爲

SQL> define foo=bar 

select語句(與&foo)回報酒吧

SQL> select '&foo' from dual; 
old 1: select '&foo' from dual 
new 1: select 'bar' from dual 

'BA 
--- 
bar 

參見DEFINEDefining Substitution Variables

如果你想要把這種行爲關閉,請執行

SQL> set define off 

編輯:改變set define=set define off按照亞當MUSCH的建議。

+1

'set define off'是正確的方法。 –

+0

@AdamMusch:謝謝你的建議。我改進了我的答案。 –