第十四章 使用SQL Shell界面(二)

第十四章 使用SQL Shell界面(二)

存儲和調用SQL語句

通過數據回調

SQL Shell自動將在終端會話期間發出的每個成功的SQL語句存儲在本地緩存中,并為其分配一個順序號。這些數字用于在當前Terminal過程中重新調用以前的SQL語句。 SQL Shell僅將數字分配給成功的SQL語句。如果在準備SQL語句期間發生錯誤,則不會分配任何編號。這些數字分配不是特定于名稱空間的。以下是可用的數字調用命令:

  • :可以使用#列出所有先前緩存的SQL語句及其分配的編號。
  • #n:可以通過在SQL Shell提示符下指定#n來調用并執行先前的SQL語句,其中n是SQL Shell分配給該語句的整數。
  • #0:可以通過在SQL Shell提示符下指定#0來調用并執行最近準備的SQL語句。 #0調用最近準備的SQL語句,而不必調用最近執行的SQL語句。因此,調用和執行SQL語句對#0調用哪個SQL語句沒有影響。

通過數字調用SQL語句不會為該語句分配新的數字。 SQL Shell在終端會話的持續時間內順序分配數字;退出并重新進入SQL Shell或更改名稱空間不會影響數字分配或先前分配的數字的有效性。

要刪除所有號碼分配,請使用#CLEAR并在顯示的提示符下確認此操作。這將刪除所有先前的號碼分配,并從1重新開始號碼分配。

通過名字回調

可以選擇為SQL語句分配名稱,然后按名稱重新調用該語句。這些名稱用于重新調用從任何當前用戶的Terminal進程發出的SQL語句。通過名稱保存和調用SQL語句有兩種方法:

  • 使用SAVEGLOBAL保存到全局;使用OPEN從全局調用。
  • 使用SAVE保存到文件;使用LOAD從文件中調用。

保存到全局變量

要將全局名稱分配給最新的SQL語句,請使用sql shell命令saveglobal名稱,該名稱可以縮寫為SG名稱。然后,可以使用SQL Shell命令打開名稱來調用全局的SQL語句。如果Executemode是立即的,則SQL shell都會調用并執行該語句。如果延遲了executemode,則將準備該語句,但在指定GO命令之前,不會執行該語句。

每次使用打開名稱以全局名稱調用SQL語句時,SQL shell會為語句分配新號碼。舊的和新數字都對調用數字仍然有效。

名稱可以包含除空白字符之外的任何可打印字符。名稱中的字母區分大小寫。名稱可以是任何長度。名稱特定于當前命名空間。可以多次使用不同名稱保存相同的SQL語句;所有已保存的名稱都保持有效。如果使用已分配的名稱保存SQL語句,則SQL Shell會提示是否希望覆蓋現有名稱,將其重新分配給新的SQL語句。

為當前命名空間分配全局名稱。可以使用SQL Shell L(或列表)命令列出當前命名空間的所有分配的全局名稱。分配后,所有當前用戶的終端進程都可以使用名稱。在創建它結束的終端進程后,分配的名稱仍然存在。如果沒有名稱分配,則列表返回“保存”消息的“無語句”。

要刪除全局名稱分配,請使用清除名稱。要刪除當前命名空間的所有全局名稱分配,請在顯示的PROMP下使用清除并確認此操作

保存到文件

要將文件名分配給最新的SQL語句,請使用SQL Shell命令保存名稱。然后,可以使用SQL Shell命令加載名稱來調用SQL語句。如果Executemode是立即的,則SQL shell都會調用并執行該語句。每次使用Load Name按文件名調用SQL語句時,SQL Shell會將新號碼分配給語句。舊的和新數字都對召回數字仍然有效。

名稱可以包含除空白字符之外的任何可打印字符。名稱中的字母區分大小寫。名稱可以是任何長度。名稱特定于當前命名空間。可以多次使用不同名稱保存相同的SQL語句;所有已保存的名稱都保持有效。如果嘗試使用已分配的名稱保存SQL語句,則SQL Shell會提示是否希望覆蓋現有名稱,將其重新分配給新的SQL語句。

為當前命名空間分配名稱。分配后,所有當前用戶的終端進程都可以使用名稱。在創建它結束的終端進程后,分配的名稱仍然存在。

清除緩存查詢Query

SQL shell提供了清除(縮寫p)命令,以清除當前命名空間中的所有緩存查詢。此命令清除名稱空間中的所有緩存查詢,而不僅僅是使用SQL Shell生成的查詢。

$SYSTEM.SQL.Purge()方法和管理門戶操作下拉列表選項為提供了更具體的選項,僅清除所選擇的緩存查詢或清除命名空間中的所有緩存查詢。

配置SQL shell

  • 可以使用Management Portal配置SQL Shell默認值。
  • 可以使用SQL Shell參數配置單個SQL shell。更改SQL Shell參數覆蓋SQL shell的當前調用的系統范圍默認值;它不會更改系統范圍的SQL shell默認值。

以下是可用的SQL Shell配置選項,相應的shell參數和默認設置:

管理門戶shell配置 Shell 參數 默認
Select Mode selectmode Logical
SQL Dialect (TSQL) dialect (TSQL) IRIS
Schema Search Path path none
Result Column Alignment colalign Delimiter
Command Prefix (TSQL) commandprefix (TSQL) none
Result Output Display Mode displaymode Current Device
Display Path displaypath none
Display File displayfile none
Display File Translate Table displaytranslatetable none
Echo Mode echo On
Execute Mode executemode Immediate
Messages Mode messages On
IF condition to allow execution 1
log Off

標記為(TSQL)的參數主要用于從SQL Shell執行SybaseMSSQL Transact-SQL代碼。

配置SQL Shell系統范圍默認值

轉到管理門戶,選擇系統管理,配置,SQL和對象設置,SQL。選擇SQL Shell選項卡。查看并設置SQL Shell系統范圍的當前默認設置。

如果更改一個或多個配置設置,則在管理門戶路徑之后立即由屏幕的左上角的星號(*)表示。例如,系統>配置> SQL *。按SAVE按鈕接受更改。激活更改,星號消失。

為SQL shell配置參數

SQL Shell配置參數特定于當前終端進程上的當前SQL Shell調用。設置跨名稱空間應用。但是,如果退出SQL Shell,則所有SQL Shell參數都會重置為系統寬的默認值。 Intersystems Iris提供系統默認值;您可以使用Set Save建立當前進程的不同默認值,如下所述。

SQL shell set命令(沒有參數)顯示當前shell配置參數,如以下示例所示。在此示例中,該組顯示系統默認值,這些值是調用SQL Shell時建立的值:

[SQL]USER>>SET
 
commandprefix = ""
dialect = IRIS
displayfile =
displaymode = currentdevice
displaypath =
displaytranslatetable =
echo = on
executemode = immediate
log = off
messages = on
path = SQLUser
selectmode = logical
[SQL]USER>>

要顯示單個配置參數的當前設置,請指定set param。例如,SET SelectMode返回當前選擇介紹設置。

可以使用SQL Shell Set命令設置shell配置參數。 SQL Shell調用的持續時間持續一個設定值;每次調用SQL shell時,參數都會重置為默認值。設置可以使用以下任一語法表單:

SET param value
SET param = value

參數和值都不區分大小寫。允許空間,但不需要,之前和之后。

SQL Shell Set Save命令將當前shell配置參數設置保存為用戶默認值。這些默認值應用于當前進程的所有后續SQL Shell調用。它們也被應用于SQL Shell默認值,以在該用戶調用的終端過程中的任何后續調用的SQL Shell。它們仍然有效,直到特別重置。使用Set保存不會影響當前正在運行的SQL Shell調用。

SQL Shell Set Clear命令清除(重置為系統默認值)當前進程的當前shell配置參數設置。 Intersystems IRIS將此重置應用于當前進程的后續SQL Shell調用,或者當前用戶調用的任何新終端進程。設置清除不會影響當前運行的SQL Shell調用。

既不設定保存也沒有設置清除更改系統范圍的SQL Shell Shell默認設置,使用管理門戶進行配置和顯示。

Setting COLALIGN

可以使用Set Colalign來指定用于顯示查詢ResultSet數據和列標題的空格格式。可用選項包括:

  • 分隔符:ResultSet標題/數據列將基于標準分隔符(標簽)對齊。這是默認值。
  • 標題:ResultSet標題/數據列將基于列標題的長度和標準分隔符(標簽)對齊。
  • 數據:ResultSet標題/數據列將基于列數據屬性的精度/長度和標準分隔符(標簽)對齊。

設置displaymode和displaytranslatetable

可以使用Set DisplayMode指定用于顯示查詢數據的格式,如以下示例所示:

DHC-APP>DO $SYSTEM.SQL.Shell()
SQL Command Line Shell
----------------------------------------------------
 
The command prefix is currently set to: <<nothing>>.
Enter q to quit, ? for help.
DHC-APP>>SET DISPLAYMODE XML
 
displaymode = xml
DHC-APP>>

DisplayMode默認值是CurrentDevice,其在TXT格式中顯示終端上的查詢數據。可以指定set displaymode = cur恢復CurrentDevice默認值。

其他可用選項有TXTHTMLPDFXMLCSV
格式的選擇決定了文件類型。
InterSystems IRIS創建這種類型的文件,將查詢數據寫入該文件,并在可能的情況下啟動適當的程序來顯示該查詢數據文件。
對于除TXT之外的所有選項,將創建第二個文件來記錄結果集消息。
默認情況下,SQL Shell在InterSystems IRIS mgr\Temp\目錄中創建這些文件,并分配一個隨機生成的帶有適當文件類型后綴的文件名。
生成的消息文件名與數據文件名相同,除了附加的字符串“Messages”
對于HTMLPDFXML選項,消息文件具有與查詢數據文件相同的文件類型后綴。
對于CSV選項,消息文件具有TXT文件類型后綴。

以下是DisplayMode = TXT時創建的文件的示例:

C:\InterSystems\IRIS\mgr\Temp\sGm7qLdVZn5VbA.txt
C:\InterSystems\IRIS\mgr\Temp\sGm7qLdVZn5VbAMessages.txt

每次運行查詢時,SQL shell都會創建一個具有隨機生成的文件名的新文件。

如果顯示屏是txtcsv,則可以選擇在執行格式轉換時指定要應用的翻譯表的名稱可以指定SET DISPLAYTRANSLATESET DISPLAYTRANSLATERATE。轉換表名稱值區分大小寫。

如果DisplayMode被設置為除CurrentDevice以外的值,則任何查詢結果集包含控制字符的數據會導致生成的警告消息。通常,控制字符僅在邏輯模式下出現在查詢結果集數據中。例如,列表結構中的數據包含在邏輯模式下顯示的控制字符。因此,建議將DisplayMode設置為CurrentDevice以外的值時,還將SelectMode設置為顯示或ODBC。

設置displayfile和displaypath

如果DisplayMode設置為“CurrentDevice以外的值”,則可以使用DisplayFileDisplayPath參數指定目標文件位置:

  • DISPLAYFILE:設置為一個沒有后綴的簡單文件名;
    例如:SET DISPLAYFILE = myfile
    也可以將該參數設置為部分限定路徑,系統間的IRIS將該路徑追加到DISPLAYPATH值或默認目錄中,根據需要創建子目錄;
    例如:SET DISPLAYFILE = mydir\myfile
    如果設置了DISPLAYPATH,系統將在指定的目錄中創建一個以該文件名命名的文件;
    如果沒有設置DISPLAYPATH,系統將在InterSystems IRIS mgr\Temp\目錄下創建一個以該文件名命名的文件。
  • DISPLAYPATH:根據操作系統平臺的不同,設置為以斜杠(“/”)或反斜杠(“\”)結尾的現有的全限定目錄路徑結構。
    如果設置了DISPLAYFILE,系統將在此目錄下創建一個名為DISPLAYFILE的文件;
    如果沒有設置DISPLAYFILE,系統將在該目錄下創建一個隨機生成的文件名文件。
    如果目錄“DISPLAYPATH”不存在,InterSystems IRIS將忽略“DISPLAYPATH”“DISPLAYFILE”的設置,使用默認目錄和隨機生成的默認文件名。

必要時,系統自動在DISPLAYPATH值的末尾添加斜杠(或反斜杠)和/或從DISPLAYFILE值的開始刪除斜杠(或反斜杠),以創建有效的完全限定目錄路徑。

設置DISPLAYMODEDISPLAYFILEDISPLAYPATH:

DHC-APP>>SET DISPLAYMODE XML
 
displaymode = xml
DHC-APP>>SET DISPLAYFILE = myfile
 
displayfile = myfile
DHC-APP>>SET DISPLAYPATH = C:\temp\mydir\
 
displaypath = C:\temp\mydir\
DHC-APP>>

執行查詢時,SQL shell將生成以下文件。第一個包含查詢數據。第二個包含Query執行產生的任何消息:

C:\temp\mydir\myfile.xml
C:\temp\mydir\myfileMessages.xml

如果既不指定DISPLAYFILE也不指定DISPLAYPATH,系統將在Mgr\Temp\目錄下為InterSystems IRIS安裝(例如,C:\InterSystems\IRIS\Mgr\Temp\)創建一個隨機生成的文件名。

如果顯示屏未設置為CurrentDevice,則每次使用displayfile集運行查詢時,命名文件中的任何現有數據都會被新查詢數據替換為新的查詢數據。每次使用displayfile未設置查詢時,SQL shell都會使用隨機生成的文件名和新的相應郵件文件創建一個新文件。

如果displaymode設置為currentDevice,則DisplayFileDisplayPath參數無效。

設置executemode

SQL Shell支持立即和延遲的SQL語句執行。立即執行準備并在按Enter鍵時執行指定的SQL語句。延遲執行準備在輸入Enter時,但在指定轉到SQL提示符之前,不會執行它。

可用選項已立即設置ExecuteMode(默認值),設置ExecuteMode延遲和設置ExecuteMode以顯示當前模式設置。以下示例設置執行模式:

DHC-APP>>SET EXECUTEMODE DEFERRED
 
Executemode = deferred

延遲執行允許準備多個SQL查詢,然后按名稱或編號調用它們以進行執行。要執行準備好的SQL語句,請調用所需的語句(來自適當的命名空間),然后指定Go

以下示例顯示了在延遲模式下準備三個查詢。前兩個保存并分配了調用名稱;第三個未分配一個名稱,但可以通過數字來調用:

DHC-APP>>SELECT TOP 5 Name,Home_State FROM Sample.Person
1.      SELECT TOP 5 Name,Home_State FROM Sample.Person
 
---------------------------------------------------------------------------
DHC-APP>>SAVE 5sample
 
...statement saved as: 5sample
DHC-APP>>SELECT TOP 5 Name,Home_State FROM Sample.Person ORDER BY Home_State
2.      SELECT TOP 5 Name,Home_State FROM Sample.Person ORDER BY Home_State
 
---------------------------------------------------------------------------
DHC-APP>>SAVE 5ordered
 
...statement saved as: 5ordered
DHC-APP>>SELECT Name,Home_State FROM Sample.Person ORDER BY Home_State
3.      SELECT Name,Home_State FROM Sample.Person ORDER BY Home_State
 
---------------------------------------------------------------------------

以下示例顯示了延遲模式執行前一個示例中定義的兩個查詢的執行。請注意,此示例通過名稱調用一個查詢(在調用SQL Shell提供新號碼時,并按編號調用一個查詢:

DHC-APP>>go
 
 
C:\InterSystems\Cache\mgr\Temp\ffQlXfFdbGnOxA.xml
Messages.xml
statement prepare time(s)/globals/lines/disk: 0.0526s/45464/263430/5ms
          execute time(s)/globals/lines/disk: 0.2948s/153553/1042318/75ms
---------------------------------------------------------------------------

Setting ECHO

可以使用Set Echo來指定是否將查詢結果恢復到SQL Shell。如果指定SET Echo = OFF,則準備查詢,定義緩存查詢,并執行查詢。終端沒有查詢結果。這在以下示例中顯示:

DHC-APP>>set echo=off
 
echo = off
DHC-APP>>SELECT Name,Age FROM Sample.Person
4.      SELECT Name,Age FROM Sample.Person
 
--------------------------------------------------------------------------

如果指定SET Echo = ON(默認值),則將查詢結果顯示給終端。這在以下示例中顯示:

DHC-APP>>set echo=on
 
echo = on
DHC-APP>>SELECT Name,Age FROM Sample.Person
5.      SELECT Name,Age FROM Sample.Person
 
---------------------------------------------------------------------------
DHC-APP>>go
 
 
C:\InterSystems\Cache\mgr\Temp\LVZpPfjfxXXJBg.xml
Messages.xml
statement prepare time(s)/globals/lines/disk: 0.0001s/5/187/0ms
          execute time(s)/globals/lines/disk: 0.1613s/152365/1040157/0ms
---------------------------------------------------------------------------

SET Echo如果displaymode = currentDevice(默認值)僅有意義。

SET ECHOSET MESSAGES指定終端顯示的內容;
它們不會影響查詢的準備或執行。
如果SET MESSAGES=OFF和SET ECHO=OFF,則查詢準備好了,一個緩存的查詢被創建,查詢執行創建一個查詢結果集,但是沒有返回給終端。

Setting MESSAGES

可以使用SET MESSAGES來指定是否顯示查詢錯誤消息(如果不成功)或查詢執行信息(如果成功):

  • 如果查詢執行不成功:如果指定SET MESSAGES=OFF,則終端不會顯示任何信息。
    如果指定SET MESSAGES=ON(默認值),則返回查詢錯誤提示,如下所示:error #5540: SQLCODE: -30 message: Table 'SAMPLE
    值得注意的沒有找到。
  • 如果查詢執行成功:如果指定SET MESSAGES=OFF,則只顯示查詢結果和受影響的n行。
    如果指定SET MESSAGES=ON(默認值),則查詢結果和受影響的n行(s行)后面緊跟著語句準備度量、語句執行度量和生成的緩存查詢的名稱。

準備和執行指標以運行時間(以毫秒為單位)、全局引用總數、執行的命令總數和磁盤讀取延遲(以毫秒為單位)來衡量。

設置DISPLAYMODE不會改變SET MESSAGES=ON時顯示的信息。
一些DISPLAYMODE選項同時創建一個查詢結果集文件和一個消息文件。
該消息文件包含結果集消息,而不是set messages =ON時顯示到終端的查詢準備和執行消息。

設置消息并設置echo指定終端上顯示的內容;它們不會影響查詢的準備或執行。如果SET MESSAGENT = OFFSET ECHO = OFF,則準備成功的查詢,創建緩存的查詢,查詢執行創建查詢結果集,但沒有返回到終端。

Setting LOG

可以使用Set日志指定是否將SQL Shell活動記錄到文件。可用選項包括:

  • SET LOG OFF: 默認值。 Intersystems IRIS不會為當前SQL Shell記錄活動。
  • SET LOG ON: Intersystems Iris將SQL Shell活動記錄到默認日志文件。
  • SET LOG pathname:Intersystems Iris將SQL Shell活動記錄到Pathname指定的文件。

SET LOG ON在IRIS\mgr\namespace中創建一個日志文件,其中namespace是進程當前命名空間的名稱。
這個默認日志文件名為xsqlnnnn。
其中nnnn是當前進程的進程ID (pid)號。

日志文件可以掛起并恢復。
創建日志文件后,SET log OFF會掛起對該日志文件的寫入。
設置LOG ON恢復寫入默認日志文件。
日志重新啟動:日志恢復時,將日期時間寫入日志文件。
設置LOG ON總是激活默認日志文件。
因此,如果暫停寫入指定的路徑名日志文件,則在恢復時必須指定SET log pathname

激活日志文件創建終端上顯示的SQL Shell活動的副本;它不會重定向SQL Shell終端輸出。 SQL Shell Log為失敗的SQL執行和SQL代碼記錄SQL錯誤,并為成功的SQL執行而導致的行計數。 SQL Shell日志不會記錄結果集數據。

如果日志已處于活動狀態,則指定“設置”登錄無效。如果日志已處于活動狀態,則指定設置日志路徑名暫停當前日志并激活路徑名指定的日志。、

Setting PATH

可以使用SET路徑架構來設置Schema Search Path,SQL用于提供不合格表名的正確架構名稱。架構可以是單個架構名稱,或者逗號分隔的架構名稱列表,如下例所示:

DHC-APP>>SET PATH cinema,sample,user
 
path = cinema,sample,user

沒有任何參數的設置路徑刪除了當前架構搜索路徑,恢復系統范圍的默認模式名稱。

如果未指定SET路徑架構,或者在指定的模式中找不到表,則SQL Shell使用系統范圍的默認模式名稱。

Setting SELECTMODE

可以使用SetSeliteMode指定用于顯示查詢數據的模式。

DHC-APP>>SET SELECTMODE DISPLAY
 
selectmode = display

可用選項顯示,邏輯和ODBC。邏輯是默認值。要確定當前模式,請指定SETELESMODE,無需值:

DHC-APP>>SET SELECTMODE logical
 
selectmode = logical

%List數據使用非打印字符進行編碼。因此,當SelectMode =邏輯時,SQL shell將%List數據值顯示為$listbuild語句,例如以下$lb("White","Green")。時間數據類型數據支持分數秒。因此,當SelectMode = ODBC時,SQL Shell顯示分數秒,這與ODBC標準不對應。實際的ODBC時間數據類型截斷分數秒。

還可以使用SET SELECTMODE指定輸入數據是否將從顯示格式轉換為邏輯存儲格式。
要進行此數據轉換,必須使用select運行時模式編譯SQL代碼。
在執行時,SET SELECTMODE必須設置為LOGICAL(默認值)。

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,030評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,310評論 3 415
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,951評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,796評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,566評論 6 407
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,055評論 1 322
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,142評論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,303評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,799評論 1 333
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,683評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,899評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,409評論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,135評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,520評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,757評論 1 282
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,528評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,844評論 2 372

推薦閱讀更多精彩內容