sql - ORA-06553:PLS-801:内部错误 [55018]
问题描述
我想进行类似的函数调用,SELECT URUN_GETIR('test1') FROM DUAL;
但我得到了ORA-06553: PLS-801: Internal Error [55018]。
我尝试了 ORA-06553: PLS-801: internal error [55018] 当测试函数返回 ROWTYPE 时,例如前 URUN_GETIR('test1').KULUSERNAME 但得到相同的错误。它对我不起作用。在此先感谢。
我的数据库表:
我的plsql函数代码:
create or replace FUNCTION URUN_GETIR(KULADI VARCHAR2)
RETURN URUN%ROWTYPE
AS
URUN_TABLO URUN%ROWTYPE;
BEGIN
SELECT * INTO URUN_TABLO FROM URUN ur WHERE ur.kulusername = KULADI;
RETURN URUN_TABLO;
END;
解决方案
您可以使用 表函数来实现您的目标。除此之外,您不能像您想要的那样直接调用您的函数。这是您的另一个选择明智地使用 Stackoverflow
CREATE TABLE URUN
(
CREATED_BY VARCHAR2 (50 CHAR),
CREATED_DATE DATE,
UPDATED_BY VARCHAR2 (50 CHAR),
KULUSERNAME VARCHAR2 (50 CHAR),
ID NUMBER (10)
);
INSERT INTO URUN (CREATED_BY, CREATED_DATE, UPDATED_BY, KULUSERNAME, ID) VALUES('TEST1',TO_DATE('19000101','YYYYMMDD') ,'TTEST1','USER1',1);COMMIT;
INSERT INTO URUN (CREATED_BY, CREATED_DATE, UPDATED_BY, KULUSERNAME, ID) VALUES('TEST2',TO_DATE('19000102','YYYYMMDD') ,'TTEST2','USER2',2);COMMIT;
INSERT INTO URUN (CREATED_BY, CREATED_DATE, UPDATED_BY, KULUSERNAME, ID) VALUES('TEST3',TO_DATE('19000103','YYYYMMDD') ,'TTEST3','USER3',3);COMMIT;
INSERT INTO URUN (CREATED_BY, CREATED_DATE, UPDATED_BY, KULUSERNAME, ID) VALUES('TEST4',TO_DATE('19000104','YYYYMMDD') ,'TTEST4','USER4',4);COMMIT;
CREATE OR REPLACE TYPE URUN_OBJ AS OBJECT
(
CREATED_BY VARCHAR2 (50 CHAR),
CREATED_DATE DATE,
UPDATED_BY VARCHAR2 (50 CHAR),
KULUSERNAME VARCHAR2 (50 CHAR),
ID NUMBER (10)
);
CREATE OR REPLACE TYPE URUN_OBJ_TAB AS TABLE OF URUN_OBJ;
CREATE OR REPLACE FUNCTION URUN_GETIR (KULADI IN VARCHAR2)
RETURN URUN_OBJ_TAB
PIPELINED
AS
REC_OBJ URUN_OBJ;
CURSOR DATA
IS
SELECT *
FROM URUN UR
WHERE UR.KULUSERNAME = KULADI;
BEGIN
FOR REC IN DATA
LOOP
REC_OBJ :=
URUN_OBJ (REC.CREATED_BY,
REC.CREATED_DATE,
REC.UPDATED_BY,
REC.KULUSERNAME,
REC.ID);
PIPE ROW (REC_OBJ);
END LOOP;
RETURN;
END;
/
SELECT * FROM TABLE(URUN_GETIR('USER1'));
CREATED_BY CREATED_DATE UPDATED_BY KULUSERNAME ID
TEST1 1.01.1900 TTEST1 USER1 1
推荐阅读
- python-3.x - 从文本文件读取时Beam是否支持自定义分隔符
- amazon-cloudformation - 无服务器版本 > 2.35 将变量替换为 Cloudformation 模板时出错
- reactjs - 使用 React 中的相同子域连接到多个微服务
- flutter - 在 Flutter Web 中出现“断言失败:_pressedKeys.containsKey(event.physicalKey)”错误
- c++ - 如果两个函数在递归中进行算术运算,哪个函数将首先工作?
- typescript - 重复名称 - 导出和未导出(在命名空间中包装导出的函数)
- html - 如何使用css将行切换为列
- javascript - 用逗号输入类型号 React
- android - 安装 Andorid studio AVD 准备 SDK 包时发生错误 Google APIs Intel x86 Atom System Image: Read timed out
- java - ESAPI 从 2.0.1 升级到 2.2.2.0 得到以下异常