【发布时间】:2020-01-25 11:37:10
【问题描述】:
我想使用 plsql 填充一个表。它将获取表名作为参数并插入表中已经存在的记录。问题是当表中有主键时,不能有重复的记录。我不知道如何解决这个问题。 此代码生成 20 行并插入到特定表中。由于employee_id 是主键,我为此生成了序列。但我的问题是当我想为任何表插入记录时。 简而言之,我想执行动态插入语句。
这段代码可以很好地为员工表插入记录。
create or replace procedure proc ( number_of_records IN number )
IS
BEGIN
INSERT INTO employees (EMPLOYEE_ID,FIRST_NAME,LAST_NAME,EMAIL,PHONE_NUMBER,HIRE_DATE,JOB_ID,SALARY,COMMISSION_PCT,MANAGER_ID,DEPARTMENT_ID)
SELECT generate.nextval,FIRST_NAME,LAST_NAME,DBMS_RANDOM.STRING('A', 20),PHONE_NUMBER,HIRE_DATE,JOB_ID,SALARY,COMMISSION_PCT,MANAGER_ID,DEPARTMENT_ID
FROM employees where rownum<=number_of_records;
end proc;
execute proc(20);
【问题讨论】:
-
你不知道如何将表名作为参数传递,然后对该表执行sql语句?
-
是的,但我的问题更多是关于我不知道如何执行插入到作为参数给出的任何表的语句中。因为我不知道它的列和主键列。我对plsql有点陌生。 @dmak2709
-
您的 Oracle 版本是多少?
-
是10g版@Ankit Bajpai
标签: oracle stored-procedures plsql