我有以下创建或定义类型为记录的过程:
create or replace procedure p_two
as
type sample_record is RECORD
(
name varchar2(32),
age number,
emp_id varchar2 (32)
);
begin
commit;
dbms_output.put_line('Hello from procedure');
end p_two;
我刚刚开始使用PL/SQL和Oracle DB,并在PL/SQL Developer上尝试了所有这些,并在SQL窗口中有以下代码来执行该过程:
begin
p_two;
dbms_output.enable;
dbms_output.put_line('Hello');
commit;
end;
问题是代码运行成功,我在output选项卡中获得了output Hello
和Hello from procedure
,但是“sample_record”没有存储在数据库中,或者没有创建记录。它没有显示在PL/SQL中的types
选项卡下。
我在SQL窗口中直接尝试了以下操作:
create or replace type sample_record is RECORD
(
name varchar2(32),
age number,
emp_id varchar2 (32)
);
它用错误进行编译。但是这一次“sample_record”在types
下是可见的,但是它显示了一个错误,并且没有显示任何属性。我读了一些关于这件事的文章,发现一些帖子说
Record is not supported by SQL schema and it is only supported in PL/SQL
这就是为什么在类型下显示错误的原因。
我的疑问是如何创建和存储记录类型,因为在PL/SQL块中这样做显然没有存储记录类型,而且SQL模式也不直接支持它,因此它使用错误进行编译。
我对这些技术很陌生,因为我主要使用MySQL,但需要很快熟悉PL/SQL和Oracle的项目。我想要做的是建立一个调查程序。因此,我基本上创建了一个对象sample_object
,并定义了一个sample_object
类型的表sample_table
,但是我不能直接在表中存储值。因此,我想我必须创建一个记录,并使用它填充从对象创建的表。我仍然找不出正确的方法,也找不到任何使用对象和记录来定义表和填充表的帖子。如果有人能在同一篇文章或教程上分享一篇文章或教程,那就太好了。
发布于 2019-08-04 01:15:41
没有模式级别的RECORD
。您可以使用OBJECT
关键字而不是RECORD
来创建TYPE
CREATE OR REPLACE type sample_record IS OBJECT
(
name varchar2(32),
age number,
emp_id varchar2 (32)
);
您还可以使用包级别记录,该记录可以全局使用。
CREATE OR REPLACE package pkg_objtest AS
TYPE sample_record IS RECORD (
name varchar2(32),
age number,
emp_id varchar2 (32)
);
END;
/
DECLARE
srec pkg_objtest.sample_record;
BEGIN
srec.name := 'Mathews';
srec.age := 25;
srec.emp_id := 'U203';
END;
/
Package PKG_OBJTEST compiled
PL/SQL procedure successfully completed.
https://stackoverflow.com/questions/57345228
复制相似问题