PL/SQL插入查询中是否允许使用变量?

PL/SQL插入查询中是否允许使用变量?,sql,plsql,insertion,Sql,Plsql,Insertion,是否允许对变量使用Insert查询 比如: 插入变量1(col1\u变量名称,col2\u变量名称) 值(变量3、变量4) ? 有关详细信息,表和列名不能作为变量传递给语句。完成您似乎要做的事情的一种方法是将语句构建为字符串,然后动态执行它,如中所示: DECLARE strStmt VARCHAR2(2000); strTable VARCHAR2(30) := 'SOME_TABLE'; strCol1 VARCHAR2(30) := 'COL1'; strCol2

是否允许对变量使用Insert查询

比如: 插入变量1(col1\u变量名称,col2\u变量名称) 值(变量3、变量4)

?


有关详细信息,表和列名不能作为变量传递给语句。完成您似乎要做的事情的一种方法是将语句构建为字符串,然后动态执行它,如中所示:

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;

分享和享受。

你能用一个很好的例子解释一下什么是%TYPE吗?你看到语法下面的链接了吗@Batousik谢谢,回答得很好,尽管谷歌的回答速度更快:)现在我有了动态sql查询:)我们正在寻找经过充分研究的问题,并展示了OP作者所做的一些实际工作。
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;