sql - 从 rowtype 参数分配给变量值
问题描述
我搜索了 stackoverflow 和其他来源,但没有发现任何有用的东西。
我必须实现一个从 Reservation 表中接收一行(因此为“%rowtype”)作为参数的过程。
该表的名称是 Reservation(作为属性:id_Reservation、id_Room、price 等)。
我创建了一个匿名块来创建 var_reservation 变量,它将作为过程的参数:
CREATE OR REPLACE PROCEDURE priceCheckout(var_reservation reservation%ROWTYPE) IS
l_idReservation NUMBER;
l_idRoom NUMBER;
prie INT;
date1 DATE;
date2 DATE;
ex exception;
BEGIN
l_idReservation := var_reservation.id_reservation;
(...)
END;
但这是错误的。我该如何纠正?
解决方案
如果你做对了,它就可以工作。根据 Scott 的DEPT
表格查看以下示例:
SQL> select * from dept;
DEPTNO DNAME LOC
---------- -------------------- --------------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
SQL> set serveroutput on
程序:
SQL> create or replace procedure p_test (var_row dept%rowtype)
2 is
3 l_dname dept.dname%type;
4 begin
5 l_dname := var_row.dname;
6
7 dbms_output.put_line('Department name = ' || l_dname);
8 end;
9 /
Procedure created.
测试:
SQL> declare
2 l_row dept%rowtype;
3 begin
4 select *
5 into l_row
6 from dept
7 where deptno = 10;
8
9 p_test(l_row);
10 end;
11 /
Department name = ACCOUNTING
PL/SQL procedure successfully completed.
SQL>
说“这是错误的”很难调试。这不是 Oracle 错误消息,所以...除非您指定什么是“this”,并且可能编辑问题并发布您自己的 SQL*Plus 会话的复制/粘贴(就像我所做的那样),以便我们看到什么你做了,甲骨文如何回应,YOYO。
推荐阅读
- angularjs - 使用 CryptoJS 加密视频,将其存储在 Firebase 中并在 HTML5 视频中观看解密
- arrays - Kotlin - Val 无法重新分配,但可以通过从索引访问重新分配?
- r - shinydashboard:按下按钮后 x 秒执行数据导入
- java - 将加密的数据从客户端发送到服务器端进行解密
- node.js - AWS Lambda:如何按顺序调用 Mysql Query
- angular - 错误:'Spec 'ChromeLauncher works' 没有任何期望。'
- php - 如何使用 htaccess 检查非索引目录
- swift - URL 构造函数不适用于某些字符
- android - 为什么我会收到“不是有效的密钥库文件”错误
- css - 通过了解他们在 R 中的 CSS 类来抓取嵌入式交互式地图的细节