使用 Record 插入数据 PL/SQL

Posted

技术标签:

【中文标题】使用 Record 插入数据 PL/SQL【英文标题】:Using Record for inserting Data PL/SQL 【发布时间】:2013-07-15 13:41:36 【问题描述】:

我试图将一条记录插入到包含 2 列的 dept_new 表中,

DEPT_NAME         VARCHAR2(30)  
DEPT_ID        VARCHAR2(255) 

另一个表 dept 在那里创建记录 dept_e。

ACCEPT dept_num VARCHAR2(255) NOT NULL PROMPT 'Enter dept_id: ';

DECLARE
   dept_e dept%ROWTYPE;
   dept_no := &dept_num;

BEGIN
   select * INTO dept_e 
     from dept
    where dept_id = dept_no;

   INSERT INTO dept_new(dept_id,dept_name)
     VALUES (dept_e.dept_id, dept_e.dept_name);

   COMMIT;
END;
/


Error report:
ORA-06550: line 3, column 9:
PLS-00103: Encountered the symbol "=" when expecting one of the following:

constant exception <an identifier>
<a double-quoted delimited-identifier> table LONG_ double ref
char time timestamp interval date binary national character
nchar
The symbol "<an identifier>" was substituted for "=" to continue.
06550. 00000 -  "line %s, column %s:\n%s"
*Cause:    Usually a PL/SQL compilation error.
*Action:

【问题讨论】:

知道了,dept_no varchar2(255) not null := &dept_num; +1 - 找到自己的答案。 您在其中有三个 dept_id 名称——dept_num、dept_no 和 dept_id。为您的 PL/SQL 块命名,使用 >,使用 my_block_name.dept_id 作为 PL/SQL 变量的名称,使用 &dept_id 作为 SQL*Plus 变量的名称。你的代码不会那么混乱。 【参考方案1】:

请提供变量的数据类型

 dept_no := &dept_num;

如下

dept_no number := &dept_num;

希望这能解决您的问题

【讨论】:

以上是关于使用 Record 插入数据 PL/SQL的主要内容,如果未能解决你的问题,请参考以下文章

使用 PL/SQL 使用 forall 语法批量插入

在 PL/SQL 中插入 clob 数据时出错

如果不存在则插入数据的过程pl sql

在使用 Entity Framework 数据库优先在表上插入行之前,如何从 PL/SQL 执行触发器?

如何在 PL/SQL 中增量集成数据

使用 PL SQL 将数据插入到 oracle 表中仅包含一年中的“星期六”