顯示具有 ora error code 標籤的文章。 顯示所有文章
顯示具有 ora error code 標籤的文章。 顯示所有文章

2011年11月14日 星期一

11/14 Superfunction 更新

系統修正部份
1. home 資料搜尋功能修正

內容新增
1. ORA-00002 link
2. ORA-00059 link

感謝支持 Superfunction 敬上

2011年9月13日 星期二

ORA-01847

ORA-01847 day of month must be between 1 and last day of month

錯誤原因:使用時間日期格式的時候輸入不合乎時間日期規則的時間日期資料

處理辦法:輸入有效的時間日期格式,檢查使用的日期區間是否合法

範例

SELECT TO_DATE('2010/12/32', 'YYYY/MM/DD')
FROM DUAL;

這樣就會產生ORA-01847 的錯誤,因為在這一個案例中日期超過31

>> 歡迎前往 Superfunction ORA error code

ORA-01407

ORA-01407 cannot update (string) to NULL

錯誤原因:UPDATE 的欄位不可以為空

處理辦法:修正UPDATE 中對非空欄位塞入空值的敘述

範例

建立一個資料表。

CREATE TABLE table
(
AA number not null,
BB varchar2(50) not null );

所建立的欄位AA ,BB 都是要求不可以為空的值。

UPDATE table
SET AA = null
WHERE BB = 100001;

在UPDATE 敘述中有塞入空值就會發生ORA-01407 的錯誤。

>> 歡迎前往 Superfunction ORA error code

ORA-00923

ORA-00923 FROM keyword not found where expected

錯誤原因:在執行SELECT 敘述時沒有FROM 這個關鍵字

處理辦法:把FROM 這一個關鍵字加上去就好了,很簡單

範例

以下的SQL 敘述發生的錯誤是在於敘述式中沒有FROM 關鍵字的使用。

SELECT * TABLE

請修正與法如下,將FROM 關鍵字加到敘述式中。

SELECT * FROM TABLE

>> 歡迎前往 Superfunction ORA error code

ORA-01756

ORA-01756 quoted string not properly terminated

錯誤原因:在SQL敘述中字串要使用單引號包裝起來,但是單引號少一邊

處理辦法:修正SQL敘述將字串用單引號包裝起來。

範例

下面的SQL敘述會產生ORA-01756 的錯誤,發生的原因是在於當中所要處理的字串aa 只有使用一個單引號去包裝處理,缺少了另外一邊的單引號包裝。

SELECT AA, BB FROM TABLE WHERE AA = 'aa

請開發人員對於這一個錯誤作以下的修正,把整個變數用單引號完整的包裝起來,修改成'aa' 的格式。

SELECT AA, BB FROM TABLE WHERE AA = 'aa'

>> 歡迎前往 Superfunction ORA error code

ORA-01789

ORA-01789 query block has incorrect number of result columns

錯誤原因:在SQL 敘述中有使用到UNION 連接兩部分敘述但是SELECT 的項目數量不一致

處理辦法:修改SELECT撈取的項目數量一致

範例

以下的敘述就是會發生ORA-01789 的錯誤,因為SELECT的欄位有不一致的狀況。

SELECT AA, BB
FROM TABLE
UNION
SELECT AA
FROM TBALE A

UINION 前的SQL 敘述撈取了AA, BB 兩個項目,但是後半段的SQL 卻只有AA 的項目,因為兩段UNION 的SQL 撈取的欄位數量不一致所以導致錯誤。

SELECT AA, BB
FROM TABLE
UNION
SELECT AA, BB
FROM TBALE A

>> 歡迎前往 Superfunction ORA error code

2011年9月12日 星期一

ORA-01401

ORA-01401 inserted value too large for column

發生原因:企圖INSERT 的資料長度超過欄位限制

處理辦法:
1.調整SQL 敘述中所操作的值以符合所要塞入的欄位
2.修改資料表的欄位長度限制以符合所要操作的資料長度

範例

建立一個資料表,設定兩個欄位是AA 與BB 長度設定為VARCHAR(2)。

CREATE TABEL TABLE(
AA VARCHAR(2),
BB VARCHAR(2)
)

今天要INSERT 一筆新的資料到資料表中。

INSERT INTO TABEL(
AA,
BB)VALUES(
'aaa',
'bb'
)

這樣就會出現ORA-01401 的錯誤,因為AA的欄位長度限制是VARCHAR(2) 但是INSERT的資料長度是3,因此超過欄位長度的限制,因此修改INSERT 的資料長度或是修改資料表的長度限制即可以解決。

>> 歡迎前往 Superfunction ORA error code

ORA-01438

ORA-01438 value larger than specified precision allows for this column

發生原因:在執行INSERT或是UPDATE的時候,給值的數字格式資料長度超過限制

處理辦法:
1.修改數字欄位的資料長度在限制的長度之內
2.修改資料表的資料長度限制

範例
建立一個資料表,設定資料長度分別為NUMBER(2)及VARCHAR(2)。

CREATE TABLE TABEL_NAME(
AA NUMBER(2),
BB VARCGAR(2)
)

這樣就會發生ORA-01438的錯誤,因為AA的欄位長度是2但是卻給了一個長度是3的值。

INSERT TABELE_NAME(
AA,
BB)
VALUES(
123,
'bb')

要排除這樣的錯誤有兩個方法,把INSERT值的長度修改符合限制的長度2。

INSERT TABELE_NAME(
AA,
BB)
VALUES(
12,
'bb')

或是修改資料表的設計。

ALTER TABLE TABLE_NAME
MODIFY AA NUMBER(3)

>> 歡迎前往 Superfunction ORA error code

ORA-00955

ORA-00955 name is already used by an existing object

錯誤原因:開發人員建立的table, view, index, synonym 的名稱已經被使用

處理辦法:
1.建立唯一的名稱的object
2.drop 已經建立的object 名稱重新建立

範例
要查詢object 的名稱是不是已經存在,變數帶入你要查詢的變數名稱即可以查詢你所用的object是不是已經存在。

SELECT * FROM all_objects
WHERE object_name = 'NAME'

>> 歡迎前往 Superfunction ORA error code

ORA-27101

Ora-27101 shared memory realm does not exist

發生原因:無法取得分享記憶體的空間

處理辦法:重新設定記憶體的使用範圍

>> 歡迎前往 Superfunction ORA error code

ORA-01417

ORA-01417 a table may be outer joined to at most one other table

發生原因:開發人員使用outer join 資料表一對多個資料表的對應

處理辦法:請開發人員修正outer join 的使用方法,修改資料表的對應關係。

範例

以下的SQL 敘述就會發生ORA-01417 的錯誤。

SELECT CUSTOMER.ID, CUSTOMER.NAME, CUSTOMER.BIRTHDAY
FROM CUSTOMER, ORDER, PRODUCT
WHERE CUSTOMER.ID = ORDER.ID(+)
AND PRODUCT.ID = ORDER.ID(+)

這樣的錯誤是因為資料表outer join 的關係發生錯誤,ORDER.ID 對應兩個資料表,請修正對應資料表的對應關係如下。

SELECT CUSTOMER.ID, CUSTOMER.NAME, CUSTOMER.BIRTHDAY
FROM CUSTOMER, ORDER, PRODUCT
WHERE CUSTOMER.ID = ORDER.ID(+)
AND PRODUCT.ID = ORDER.ID

>> 歡迎前往 Superfunction ORA error code