【发布时间】:2021-12-27 07:41:47
【问题描述】:
我创建了一个名为 customers_data 的函数,它在客户表中返回随机值。 到目前为止一切都编译成功。但是当我打电话给这个时
DECLARE
X_C NUMBER NOT NULL :=5 ;
Y_C NUMBER NOT NULL :=8 ;
BEGIN
FOR LOOP_COUNTER IN X_C..Y_C LOOP
select * into CUSTOMERS from CUSTOMERS_DATA;
END LOOP;
END;
错误是:
ORA-06550
以及 CUSTOMERS_DATA 函数:
CREATE OR REPLACE FUNCTION CUSTOMERS_DATA
RETURN NUMBER AS CR_ID NUMBER;
BEGIN
CR_ID := CUSTOMERS_ID_SEQ.NEXTVAL;
INSERT INTO CUSTOMERS(CUSTOMERS_ID, CUSTOMERS_CODE )
VALUES(CR_ID, dbms_random.string('X',10));
RETURN CR_ID;
END CUSTOMERS_DATA;
【问题讨论】:
-
您没有定义名为
customers的变量,因此into子句无法工作 -
此外,CUSTOMERS_DATA 的外观如何? FROM 子句依赖它。
-
为什么不包含错误信息?没有人知道所有的错误代码,帮助我们帮助你
-
@Littlefoot 那是 CUSTOMERS_DATA 代码
-
具有副作用的函数(除了,可能是日志记录)在命名约定中是非常具有误导性的设计,尤其是当您不使用返回值时。你真正需要的是一个程序和
forallinstead ofloop,以避免在糟糕的代码设计中练习。
标签: sql oracle function random plsql