[20211220]記錄使用sqlplus的小問題.txt

lfree發表於2021-12-21

[20211220]記錄使用sqlplus的小問題.txt

--//記錄工作中遇到的一個使用sqlplus的小問題,我現在開始經常在工作中使用tpt指令碼。無意中如果在命令列加入引數會導致帶入的參
--//數失效。透過例子說明問題。

1.環境:
SCOTT@book> @ver
BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production

2.測試:
$ cat mm.txt
select '&1' from dual;

$ rlsql -s -l scott/book @mm.txt aaaaaaaa
'NOWRA
------
nowrap
quit

--//按照道理應該輸出我引數aaaaaaaa.實際上tp目錄下有一個login指令碼,自動初始化一些引數。
$ cat login.sql
-- Copyright 2018 Tanel Poder. All rights reserved. More info at
-- Licensed under the Apache License, Version 2.0. See LICENSE.txt for terms & conditions.

-- calling init.sql which will set up sqlpus variables
@init.sql
-- i.sql is the "who am i" script which shows your session/instance info and
-- also sets command prompt window/xterm title
-- @i.sql
-- you can put your own login scripts here

--//預設登入後自動呼叫init.sql指令碼,裡面呼叫htmlset.sql:
@@htmlset nowrap "&_user@&_connect_identifier report"

--//htmlset 呼叫 htmlset2 命令:
@@htmlset2 &1 "&2" #f7f7e7 black

--//這樣初始化後覆蓋了引數1,2,3,4:
DEFINE 1               = "nowrap" (CHAR)
DEFINE 2               = "SCOTT@book report" (CHAR)
DEFINE 3               = "#f7f7e7" (CHAR)
DEFINE 4               = "black" (CHAR)

--//導致出現了我遇到測試遇到的情況。如何解決呢?

3.一種改名login.sql啟動時不呼叫init.sql,修改為手動執行。
--//我嘗試了許多,也沒有什麼好方法,也許只能手工執行init.sql,養成習慣也許就ok了.大家有什麼好方法.
--//也給大家提一個醒,注意環境變數SQLPATH,以及sqlplus相關路徑下的login.sql的自動執行.

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/267265/viewspace-2848574/,如需轉載,請註明出處,否則將追究法律責任。

相關文章