我有一个SQLRPGLE程序,它使用exec sql执行删除操作。问题是我得到了一个-7008的sqlcod,即使我已经编译了程序,并将提交设置为 *NONE,而且,我试图在语句末尾添加“with none”,但似乎没有任何效果。
有什么办法吗?
更新日期:
因此,问题似乎出现了,因为我试图从中删除的表似乎是具有依赖表的父表。
但令我困惑的是,依赖表已经被清空了,它没有任何数据,为什么会出错?
Parent table :
create table grid_details
(id integer not null generated always as identity
(start with 1 increment by 1)
PRIMARY KEY,
grid_name varchar(20),
grid_description varchar(40),
source_file_name varchar(30),
created_date date default current_date,
created_by varchar(30),
last_updated_date date default current_date,
updated_by varchar(30));
Parent table :
create table action_code_details
(id integer not null generated always as
identity (start with 1 increment by 1)
PRIMARY KEY,
action_code varchar(10),
action_description varchar(40),
required_input clob,
end_point clob,
created_date
date default current_date,
created_by varchar(30),
last_updated_date date default current_date,
updated_by varchar(30));
Child table :
create table grid_action_details
(id integer not null
generated always as identity (start with 1 increment by 1)
PRIMARY KEY,
grid_details_id integer,
foreign key(grid_details_id) references grid_details(id),
action_code_details_id integer,
foreign key(action_code_details_id) references action_code_details(id),
action_code_status varchar(2),
created_date date default
current_date,
created_by varchar(30),
last_updated_date date default current_date,
updated_by varchar(30),
required_parameter clob);
我可以删除子表中的所有内容,但不能删除父表中的所有内容。
当我试图通过CLRPFM清除父表时发现了这个问题。我不明白这个问题,因为子表没有数据。那么为什么父表没有被清除呢?
1条答案
按热度按时间ugmeyewa1#
您得到的原因代码是什么?应该作为消息文本的一部分返回。
原因代码为:
1.-- &1没有成员.
1.-- &1已被保存,存储空间空闲.
1.-- &1未记入日记帐,没有日记帐权限,或日记帐状态为 *STANDBY. RI约束操作为CASCADE,SET NULL或SET DEFAULT的文件必须记入同一日记帐.
1.和第5页
1.-- &1在生产库中或正在生产库中创建,但用户具有调试模式UPDPROD(*NO)。
1.--正在创建架构,但用户处于调试模式,并具有UPDPROD(*NO)。
1.--创建视图时使用的基于表无效。该表是程序描述的表,或者位于临时架构中。
1.-- Based-on表驻留在与所创建对象ASP不同的ASP中。
1.--索引当前被占用或无效。
1.--正在向无效类型的表添加约束或触发器,或已达到最大触发器数,或分布式表的所有节点不在同一版本级别。
1.--正在架构QTEMP中创建分布式表,或者正在多个分布式表上创建视图。
1.--无法在QTEMP、QSYS、QSYS 2或SYSIBM中创建表,因为它包含具有FILE LINK CONTROL选项的DATALINK类型的列。
1.--数据表包含与数据字典恩怨的DATALINK、LOB或XML数据行。
1.--无法将DATALINK、LOB、XML或IDENTITY列添加到非SQL表中。
1.--试图使用其他ASP中的提交定义创建或更改对象。
1.--&2中的序列&1被CL命令错误修改。
1.--该表不可用,因为它包含部分事务.
编辑
因此,原因代码3的更正为
在&1(STRJRNPF)上启动日记帐,获取日记帐访问权限,或将日记帐状态更改为 *ACTIVE(CHGJRN)。
通常,当你尝试使用提交控制并且文件没有被记录时,就会抛出这段代码。但是你提到你已经用commit(*NONE)编译了,甚至在你的语句中添加了
with none
。因此,问题可能在于表被记录了,并且记录状态是 *STANDBY。我不相信记录本身会有权限问题。编辑2
实际上,看一下 *STANDBY
看起来
DELETE
不应该有问题,除非正在使用提交控制,或者除非文件具有带CASCADE、SET NULL或SET DEFAULT操作的RI约束。