2014-07-09 27 views
0

我正在使用Oracle數據庫。我有一個sql表PS_Z_STAGE_TEST_JE有三個字段(EMPLID,LAST_NAME,FIRST_NAME)。插入一個字段Select語句結果

我試圖做一個select語句,將拉動很多EMPLIDs從SQL表:ps_vc_plan_mem,並將其插入到EMPLID列而留下其他兩個字段(LAST_NAMEFIRST_NAMEnull

下面是我的SQL,但它會說

無法插入空值到LAST_NAME

,當我嘗試運行它。

INSERT INTO sysadm.PS_Z_STAGE_TEST_JE (EMPLID) 
    SELECT DISTINCT(emplid) 
    FROM ps_vc_plan_mem 
    WHERE vc_plan_id IN ('PNC-RS','PNC-SO','PNC-ESPP'); 
+0

有關錯誤消息的更多信息?姓氏和名字不是沒有默認值的空嗎? –

回答

0

錯誤信息正是它所說的。您的姓氏列必須定義爲不爲空。因此,您不能在其中插入空值。由於您沒有定義插入到列中的內容,因此它會嘗試默認插入null並失敗。

您必須在姓氏中插入某些東西。如果你不能得到一個實際的姓氏插入,我會建議一個默認字符串或一個空字符串。

INSERT INTO sysadm.PS_Z_STAGE_TEST_JE (EMPLID, LAST_NAME) 
SELECT DISTINCT(emplid), 'N/A' 
FROM ps_vc_plan_mem 
WHERE vc_plan_id IN ('PNC-RS','PNC-SO','PNC-ESPP'); 

或者,您可以更改您的表,以便last_name爲空。

1

唯一明顯的問題,我跟你的查詢看到的是在最後的星號:

INSERT INTO sysadm.PS_Z_STAGE_TEST_JE(EMPLID) 
    SELECT DISTINCT emplid 
    FROM ps_vc_plan_mem 
    WHERE vc_plan_id IN ('PNC-RS', 'PNC-SO', 'PNC-ESPP'); 

注意distinct不是一個函數。它是select上的修飾符,所以括號不代表任何意思。

+0

嗨,請看我的更新。最後的星號應該是a; – user3586248

0

在您的SQL語句結尾處有一個星號。請刪除並重試。

如果[sysadm]。[PS_Z_STAGE_TEST_JE]表有一個PK,那麼在運行該語句之前,可能需要截斷表。