国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

關于/**/注釋段在SQLPlus Worksheet中的問題(2004.12.15隨筆)

2024-07-21 02:40:34
字體:
來源:轉載
供稿:網友

  
今天在Oracle 9i 的SQLPlusWorksheet中發現一個非凡怪奇的問題,看如下語句,是先清除sys_object表,然后在該表中insert3條數據,在Golden32的5.7版本中執行完全正常:

/*====================*/
/*Object Data         */
/*====================*/

delete from sys_object;

/*Merchant*/
--Merchant Group
insert into sys_object("OBJECT_ID","OBJECT_NAME","MENU_ID","OBJECT_TYPE","OBJECT_USER","PROCESS","CREATE_USER","CREATE_TS","ITEM_SEQ","OBJECT_SEQ")VALUES('M_MERCGR','Merchant Group','M_MERC','W','A','merchant/mercgr_browse.asp','SYSTEM',SYSDATE,3,4);

/*MPS Operation*/
insert into sys_object("OBJECT_ID","OBJECT_NAME","MENU_ID","OBJECT_TYPE","OBJECT_USER","PROCESS","CREATE_USER","CREATE_TS","ITEM_SEQ","OBJECT_SEQ")VALUES('M_OPER','MPS Operation',NULL,'M','A','','SYSTEM',SYSDATE,2,5);
--Payment Adjustment
insert into sys_object("OBJECT_ID","OBJECT_NAME","MENU_ID","OBJECT_TYPE","OBJECT_USER","PROCESS","CREATE_USER","CREATE_TS","ITEM_SEQ","OBJECT_SEQ")VALUES('M_PAYADJ','Payment Adjustment','M_OPER','W','A','operation/payadj_browse.asp','SYSTEM',SYSDATE,1,6);
commit;

但在Oracle 9i 的SQLPlusWorksheet中執行時,出現的提示卻是這樣的:

已刪除3行。


已刪除0行。


已創建 1 行。

insert into sys_object("OBJECT_ID","OBJECT_NAME","MENU_ID","OBJECT_TYPE","OBJECT_USER","PROCESS","CREATE_USER","CREATE_TS","ITEM_SEQ","OBJECT_SEQ")VALUES('M_MERCGR','Merchant Group','M_MERC','W','A','merchant/mercgr_browse.asp','SYSTEM',SYSDATE,3,4)
*
ERROR 位于第 1 行:
ORA-00001: 違反唯一約束條件 (HYH.PK_SYS_OBJECT)

 

已創建 1 行。


已創建 1 行。


提交完成。

我郁悶,語句好好的為什么會出錯,看出錯信息是表示在PK字段insert了重復的值,想了半天,頓悟!WorkSheet分明是在蒙我,數據我都delete了,而且俺的PK字段是OBJECT_ID字段,不可能有重復的,再仔細看一下返回信息,發現問題了,我明明只寫了一條delete語句,卻返回的兩條delete信息,難道是delete執行了兩次?假如是執行了兩次,那么第二次執行的時候已經沒數據了,所以delete了0,為什么執行了兩次呢?

再看代碼發現一個問題:
delete之后是注釋塊:/*Merchant*/
再看報PK錯誤的那一行:
之后也是注釋塊:/*MPS Operation*/
難道是/**/搞的鬼?
好,試一下,把兩個注釋塊都改為--開頭,再Run……
,正常了……,真是氣死我了,果真是/**/的問題,那為什么為這個注釋塊沒問題:
/*====================*/
/*Object Data         */
/*====================*/
注:該塊之前還是有其它語句的。

多次測試發現,/*后面直接跟26個英文字母的注釋塊會導致WorkSheet把該注釋塊前的語句重新執行一次!
/*大小寫字母*/

其實似乎是:這樣的注釋/*大小寫字母*/使SQLPlus Worksheet重新執行了緩沖區中的命令行!

不知我寫的或我理解的對不對,
反正我的問題解決了,有疑問的話就自己試試吧

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 繁昌县| 建昌县| 城市| 日土县| 曲阳县| 保山市| 沂水县| 旅游| 景东| 科尔| 辽阳县| 鄯善县| 扎囊县| 博兴县| 孙吴县| 明溪县| 安化县| 新竹市| 遵化市| 河源市| 滨海县| 嘉义县| 大石桥市| 南华县| 方城县| 都昌县| 江达县| 宁河县| 栾城县| 曲麻莱县| 萍乡市| 长岛县| 嘉禾县| 德惠市| 玉树县| 吴江市| 富顺县| 永春县| 荆门市| 大理市| 彭阳县|