【问题标题】:How do I use an INSERT INTO with this PL/SQL code block?如何在这个 PL/SQL 代码块中使用 INSERT INTO?
【发布时间】:2013-08-08 02:54:34
【问题描述】:

我对 PL/SQL 的过程语言方面相当陌生,所以如果这是基本的,请见谅。

我正在尝试将值放入我之前在此代码块之外创建的表中。此代码当前在第六行出现错误。知道为什么吗?

BEGIN
  FOR c IN (SELECT name FROM clients) LOOP
    FOR d IN (SELECT customer_id, alt_name FROM customers) LOOP 
      IF d.alt_name LIKE '%' || c.name || '%'
      THEN
            INSERT INTO previously_made_table(name, customer_id, alt_name, customer_code) VALUES(c.name, d.customer_id, d.alt_name, '101');
            COMMIT;
       END IF;
    END LOOP;
END LOOP;
END;

【问题讨论】:

  • 请发布错误。谢谢。
  • 错误是 PL/SQL: ORA-00904: "CUSTOMER_CODE": invalid identifier
  • 我应该向你保证,桌子上肯定有这个字段。
  • 您能否尝试仅从 SQLPlus(或您最喜欢的 Oracle 工具)运行 INSERT 语句?可能你的列名弄错了……

标签: oracle for-loop plsql sql-insert sql-like


【解决方案1】:

这里不需要pl\sql

insert into previously_made_table
  (name, customer_id, alt_name, customer_code) 
 select c.name, d.customer_id, d.alt_name, '101'
 from   clients c , customers d
 where  d.alt_name LIKE '%' || c.name || '%'

【讨论】:

  • 是的,但我更想知道如何以我提出问题的 PL/SQL 格式进行操作。
  • 您可能在previously_made_table 中没有名为customer_code 的列。
  • 它就在那里,正如我在上面的评论中提到的那样。
【解决方案2】:

这行得通。

INSERT INTO previously_made_table VALUES(c.name, d.customer_id, d.alt_name, '101');

我删除了列名。希望对您有所帮助。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-14
  • 1970-01-01
  • 2021-07-11
相关资源
最近更新 更多