PL / SQL INSERT查询中是否允许变量?

时间:2014-05-28 07:53:16

标签: sql plsql insertion

是否允许使用带有变量的插入查询?

像:   插入var_1(col1_Var_Name,col2_vAr_Name)   值(var_3,var_4)

2 个答案:

答案 0 :(得分:1)

表和列名称不能作为变量传递给语句。实现您似乎要做的事情的一种方法是将语句构建为字符串,然后动态执行它,如:

DECLARE
  strStmt   VARCHAR2(2000);
  strTable  VARCHAR2(30) := 'SOME_TABLE';
  strCol1   VARCHAR2(30) := 'COL1';
  strCol2   VARCHAR2(30) := 'COL2';
  strCol3   VARCHAR2(30) := 'COL3';
  nVal1     NUMBER       := 42;
  strVal2   VARCHAR2(30) := 'HELLO';
  nVal3     NUMBER       := 100;
BEGIN
  strStmt := 'INSERT INTO ' || strTable ||
               '(' || strCol1 || ',' ||
                      strCol2 || ',' ||
                      strCol3 || ')' ||
               ' VALUES (' ||
                         nVal1   || ','    ||
                         '''' || strVal2 || ''',' ||
                         nVal3 || ')';

  EXECUTE IMMEDIATE strStmt;
END;

分享并享受。

答案 1 :(得分:0)

DECLARE
   TYPE type_name IS TABLE OF
      (column_type |
      variable%TYPE |
      table.column%TYPE
         [NOT NULL]
            INDEX BY BINARY INTEGER;

更多信息Declare Table type variable