PL / SQL帮助。如何编写插入100个新行的匿名块

时间:2013-12-08 14:38:39

标签: sql oracle plsql

我是PL / SQL的新手(以及一般的编程),并设置了一些任务。我正在努力通过他们并获得OKish,但我对这项特殊任务感到难过。我使用Oracle Application Express并创建了我正在使用的表,它名为emp2

以下是完整的任务: 编写一个PL / SQL匿名块,插入100(新)员工ID,  从数字2000开始。使用FOR循环和声明块  定义循环的下限/上限。此外  员工ID,还添加了插入占位符的代码  first_name和last_name列(避免使用NULL!),例如  员工ID 2000的“FName_2000”和“LName_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 个答案:

答案 0 :(得分:0)

您的插入语句应如下所示:

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

您需要为部件添加IF语句“还添加在employee_name 2000的first_name和last_name列中插入占位符的代码”。像这样:

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;