我必须创建一个PL / SQL包并且已经提供了一个示例包但是试图遵循它我无法创建一个对象
CREATE OR REPLACE TYPE OBJ_PERSONA_SIGNANT AS OBJECT (
db_id NUMBER(6),
usuaricreacio VARCHAR2(20),
datacreacio VARCHAR2(25),
nom VARCHAR2(25),
signatura VARCHAR2(55),
disponible BOOLEAN,);
CREATE OR REPLACE TBL_PERSONA_SIGNANT IS TABLE OF OBJ_PERSONA_SIGNANT;
但我还是得到了:
Error: PLS-00201: identifier 'OBJ_PERSONA_SIGNANT' must be declared
这应该不够吗?老实说,我不知道为什么我会使用一个对象,而所有这些信息已经在一个表中,但新工作,新规则。
我猜我应该初始化它或者其他什么但是花了最后一小时试图找出我应该做什么/我应该怎么做而且我的google-fu不是这样:/
任何想法都将受到高度赞赏。
答案 0 :(得分:0)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<script src="https://maps.googleapis.com/maps/api/js"></script>
<link href="style.css" rel="stylesheet" />
<script src="map.js"></script>
<div id="map-canvas"></div>
此处您还有一个额外的disponible BOOLEAN,);
Oracle也没有布尔数据类型link
将其更改为
,
尝试;
disponible VARCHAR2(1));
修改强>
我怎么知道是否在架构上声明了?
使用CREATE OR REPLACE TYPE OBJ_PERSONA_SIGNANT AS OBJECT (
db_id NUMBER(6),
usuaricreacio VARCHAR2(20),
datacreacio VARCHAR2(25),
nom VARCHAR2(25),
signatura VARCHAR2(55),
disponible VARCHAR2(1)
)
/
CREATE OR REPLACE
TYPE TBL_PERSONA_SIGNANT AS TABLE OF OBJ_PERSONA_SIGNANT
/
视图
ALL_TYPES
答案 1 :(得分:0)
--first you need to check in user object of your type is VALID
select * from user_objects where object_type = 'TYPE' and object_name ='YOUR_TYPE_NAME'
--you can check moere details in user_types
select * from user_types where type_name ='YOUR_TYPE_NAME'
--you will get type defination in follwing way
select text from user_source where name = 'V_TEMP' order by line
SELECT dbms_metadata.get_ddl('TYPE', 'V_TEMP') FROM DUAL;
最后如果您使用像toad / plsql developer这样的开发人员工具,那么在编辑模式下打开该类型并尝试从工具窗口编译它。 在这里你会得到确切的错误,你可以纠正它。
答案 2 :(得分:0)
TYPE 创建中存在两个问题:
TYPE
关键字。解决上述两个问题可以让你创建对象:
SQL> CREATE OR REPLACE TYPE OBJ_PERSONA_SIGNANT AS OBJECT (
2 db_id NUMBER(6),
3 usuaricreacio VARCHAR2(20),
4 datacreacio VARCHAR2(25),
5 nom VARCHAR2(25),
6 signatura VARCHAR2(55),
7 disponible VARCHAR2(1))
8 /
Type created.
SQL> CREATE OR REPLACE TYPE TBL_PERSONA_SIGNANT IS TABLE OF OBJ_PERSONA_SIGNANT
2 /
Type created.
答案 3 :(得分:0)
Hey just made some minor modications in your code and it works for me. Let me know if this helps.
DROP TYPE OBJ_PERSONA_SIGNANT;
CREATE OR REPLACE TYPE OBJ_PERSONA_SIGNANT AS OBJECT (
db_id NUMBER(6),
usuaricreacio VARCHAR2(20),
datacreacio VARCHAR2(25),
nom VARCHAR2(25),
signatura VARCHAR2(55),
disponible VARCHAR2(10) -- ut may contain 'TRUE' or 'FALSE' wich can be manipulated accrordingly
);
DROP TYPE TBL_PERSONA_SIGNANT;
CREATE OR REPLACE TYPE TBL_PERSONA_SIGNANT IS TABLE OF OBJ_PERSONA_SIGNANT;
答案 4 :(得分:0)
首先,我要感谢大家的意见。 你给了我足够的信息来自己找到问题。
由于声明写得很好(由你们检查过),我意识到我并没有将它放在应有的位置。
对于将来可能会发现这种情况的任何pl / sql开发人员:对象未在包内定义,您必须转到对象浏览器上的类型并从那里做一个“新”!
再次,谢谢大家!