oracle - 未定义值的顺序时,Oracle Insert Into 如何工作?
问题描述
我遇到了一些看起来像这样的代码。我知道它会返回自动生成的id,但我不明白的是当我调用这个函数时传递游标数据时,它如何识别当列顺序不是时要在哪些列中插入哪些值定义?
FUNCTION INSERT_ROW(DATA IN OWNER.TABLE%ROWTYPE)
RETURN OWNER.TABLE.ID%TYPE
IS
l_ID OWNER.MY_TABLE.ID%TYPE;
l_Data OWNER.MY_TABLE%ROWTYPE := DATA;
BEGIN
INSERT INTO OWNER.MY_TABLE
VALUES l_Data
RETURNING ID INTO l_ID;
我试图查找许多示例,但我只遇到按顺序定义值的示例,例如 INSERT INTO my_table (val2, val3, val4) VALUES (2, 3, 4) RETURNING val1 INTO val1;
解决方案
代码中的 insert values 语句是对带有括号的标准 insert values 子句的 PL/SQL 扩展。这是 12.2 手册中有关此主题的页面:
OWNER.TABLE%ROWTYPE 数据类型定义与表具有相同列且顺序相同的记录。您只是将数据以该格式传递给函数并将其传递给变量,然后传递给插入语句。
推荐阅读
- python - 如何将 x 轴上的散点图链接到多个图像
- firebase - 无法使用 Axios 和 NestJS 从数据库中获取项目
- csv - Octave:将结构中的数据写入 csv 文件
- javascript - 函数没有返回正确的状态
- ios - Delphi 10.4 [PAClient 错误] 错误:E0776 错误:exportArchive:配置文件“**”不包括签名证书“Apple Distribution:**”
- javascript - 为什么在 Javascript 中显示不切换?
- rust - 如何将一系列迭代器应用于数据?
- interface-builder - 将 objectIsForced 与绑定到共享用户默认控制器的控件一起使用的最佳实践是什么?
- javascript - Socket.io - 限制每个 IP 地址的连接
- assembly - TASM 打印数字数组