【问题标题】:Are variables allowed in a PL/SQL INSERT query?PL/SQL INSERT 查询中是否允许使用变量?
【发布时间】:2014-07-17 07:55:53
【问题描述】:

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

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

?

【问题讨论】:

  • 我们正在寻找经过充分研究并展示 OP 作者所做的一些实际工作的问题。

标签: sql plsql insertion


【解决方案1】:
DECLARE
   TYPE type_name IS TABLE OF
      (column_type |
      variable%TYPE |
      table.column%TYPE
         [NOT NULL]
            INDEX BY BINARY INTEGER;

更多信息Declare Table type variable

【讨论】:

  • 你能用一个很好的例子解释什么是%TYPE
  • 你看到语法下面的链接了吗? @Batousik
【解决方案2】:

表名和列名不能作为变量传递给语句。完成您似乎正在尝试做的事情的一种方法是将语句构建为字符串,然后动态执行它,如下所示:

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;

分享和享受。

【讨论】:

  • 谢谢,很好的答案,虽然谷歌回复得更快:) 现在我有动态 sql 查询:)
猜你喜欢
  • 2019-11-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-09
  • 2021-08-03
  • 2012-04-03
  • 2010-12-08
  • 1970-01-01
相关资源
最近更新 更多