2013-12-08 16 views
0

我是PL/SQL新手(通常編程),並設置了一些任務。我正在通過他們的方式努力,並逐漸變好,但我很難完成這項特殊任務。我使用Oracle快捷應用,並創造了我與工作表被稱爲EMP2PL/SQL幫助。如何編寫一個匿名塊,插入100個新行

這裏是它的任務是全部: 寫PL/SQL匿名塊嵌件100(新)員工ID, 從2000開始。使用FOR循環和聲明塊 定義循環的下限/上限。除了 員工ID,還要補充一點插入佔位符 的FIRST_NAME和LAST_NAME列(避免空值!),例如 「FName_2000」和「LName_2000」員工ID碼2000 (提示:使用連接運算符) 。

這是我到目前爲止寫的代碼(我認爲這是我認爲的)減去VALUES,因爲我無法讓這部分工作?

DECLARE 
     lower constant pls_integer := 2000; 
     upper constant pls_integer := 2099; 
    BEGIN 
     FOR i in lower..upper 
     LOOP 
      INSERT INTO emp2 (EMPLOYEE_ID, FIRST_NAME, LAST_NAME, HIRE_DATE, SALARY,    
      DEPARTMENT_ID) 
      VALUES (//UNSURE WHAT GOES HERE! ); 
     DBMS_OUTPUT.PUT_LINE('Inserted' || SQL%ROWCOUNT || ' row'); 
     END LOOP; 
    END; 
+1

當你說你不能讓'VALUES'部分工作,你有沒有嘗試過幾件事情,但沒有讓他們工作?如果是這樣,請修改您的問題,以包括您嘗試過的內容以及收到的錯誤消息。 –

+0

那麼我的意思是,這是我的第一個任務,我必須使用值。我'知道'在這裏使用的是價值觀,但不知道如何或什麼? –

+0

INSERT語句的'VALUES'部分包含要插入每列的逗號分隔列表值。 「VALUES」部分中的第一個值進入了「INSERT」語句中的第一個列名(即「EMPLOYEE_ID」),第二個值進入了「FIRST_NAME」列,依此類推。你能找到六列中的每一列的值嗎?還是有任何你正在努力的列? –

回答

0

你插入語句應該是這樣的:

INSERT INTO emp2 
(EMPLOYEE_ID, FIRST_NAME, LAST_NAME, HIRE_DATE, SALARY, DEPARTMENT_ID) 
VALUES 
(i, 'Fname', 'Lname', sysdate, 100, 10); 

您需要添加一個IF語句的一部分「還補充說,插入在FIRST_NAME佔位符和姓氏列員工ID 2000碼」 。像這樣:

IF i = 2000 
THEN 
    INSERT INTO emp2 
    (EMPLOYEE_ID, FIRST_NAME, LAST_NAME, HIRE_DATE, SALARY, DEPARTMENT_ID) 
    VALUES 
    (i, 'Fname ' || i, 'Lname ' || i, sysdate, 100, 10); 
ELSE 
    INSERT INTO emp2 
    (EMPLOYEE_ID, FIRST_NAME, LAST_NAME, HIRE_DATE, SALARY, DEPARTMENT_ID) 
    VALUES 
    (i, 'Fname', 'Lname', sysdate, 100, 10); 
END IF; 
+0

我認爲你有點誤解了這個問題。我不認爲需要區別待遇ID 2000的員工。 –

+0

你可能對嗎?我讀「從2000年開始的」100(新)員工證「的方式對我而言至少意味着每個記錄應該增加? –