📜  oracle 动态 select into - SQL (1)

📅  最后修改于: 2023-12-03 15:18:09.288000             🧑  作者: Mango

Oracle 动态 SELECT INTO - SQL

在Oracle中,动态SELECT INTO语句可用于以可变的表名和列名从一个表中选择数据并将其插入另一个表中。

语法

以下是动态SELECT INTO语句的基本语法:

DECLARE
   variable_name1 datatype;
   variable_name2 datatype;
   ...
   variable_nameN datatype;
BEGIN
   EXECUTE IMMEDIATE 'SELECT column_name1, column_name2,...,column_nameN
                     FROM table_name
                     WHERE condition'
   INTO variable_name1, variable_name2, ..., variable_nameN;
END;

其中:

  • variable_nameN:键入选择数据的变量的名称不超过32767个字符。

  • datatype:变量的数据类型(VARCHAR2、NUMBER、DATE等)。

  • column_nameN:要选择的表列的名称。

  • table_name:要从中选择数据的表的名称。

  • condition:所需的任何条件。

示例

例如,下面的代码段将选择Employee表中部门为Sales的所有员工的姓名和工资,并将它们插入到Employee_Sales表中。在此示例中,表名和列名是动态的。

DECLARE
   v_table_name VARCHAR2(50) := 'Employee';
   v_column1 VARCHAR2(50) := 'E_name';
   v_column2 VARCHAR2(50) := 'Salary';
BEGIN
   EXECUTE IMMEDIATE 'INSERT INTO Employee_Sales (' || v_column1 || ', ' || v_column2 || ')
                     SELECT ' || v_column1 || ', ' || v_column2 || ' FROM ' || v_table_name || 
                     ' WHERE Department = ''Sales''';
END;

上述示例中,使用EXECUTE IMMEDIATE语句执行了动态SELECT INTO语句,并将结果存储在Employee_Sales表中。

可以根据需要更改表名和列名,只需确保使用正确的语法。