【发布时间】:2021-01-05 17:23:18
【问题描述】:
我创建了以下简单的 PL/SQL 存储过程示例来提出一个特定问题。此过程将员工姓名和 ID 号插入到名为 employees_??? 的表中。这 ???下面解释。
PROCEDURE hire_employee (emp_id IN INTEGER, name IN VARCHAR2, country IN VARCHAR2)
AS
BEGIN
INSERT INTO employees_??? VALUES (emp_id, name, 1000);
END hire_employee;
我需要的是根据IN变量country设置表名。例如,
如果 country = 'usa',我希望 INSERT 行改为:
INSERT INTO employees_usa VALUES (emp_id, name, 1000);
如果 country = 'germany',我希望 INSERT 行改为:
INSERT INTO employees_germany VALUES (emp_id, name, 1000);
如果 country = 'france',我希望 INSERT 行改为:
INSERT INTO employees_france VALUES (emp_id, name, 1000);
等等……
有没有办法在 PL/SQL 中通过替换 employee_??? 来做到这一点,所以只使用一行代码来插入?还是使用case 或if/then/else 语句是最好的方法?
【问题讨论】:
-
您的数据库模型已完全损坏。您应该只有一个表
employee,其中有一列名为country。与其解决这个错误模型所带来的问题,不如立即重新设计它。 -
是的,我同意——这只是一个示例,用于弄清楚如何将 IN 参数添加到 pl/sql 中的变量名上。
-
那么这是一个非常不好的例子。
-
请提供一个真实描述您要完成的工作的示例。
-
好的,我在这里创建了一个新问题:stackoverflow.com/questions/9959799/…