注册

DM对每条记录的长度限制到底是什么样的具体规则

DM_011386 2022/05/08 1259 9

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:DM8
【操作系统】:LINUX
【CPU】:
【问题描述】*:
declare
v_sql text;
v_create text;
begin
execute immediate ‘drop table nidate’;
for i in 1…176
LOOP
v_sql:=v_sql||‘,’||‘id’||i||’ varchar’;
end loop;
v_sql :=ltrim(v_sql, ‘,’);
v_create:=‘create table nidate(’||v_sql||‘) storage(using long row,nobranch)’;
execute immediate v_create;
execute immediate ‘insert into nidate(id1) values(’‘a’‘)’;
commit;
end;
/
declare
begin
for i in 1…176
loop
begin
execute immediate ‘update nidate set id’||i||‘=’‘’||dbms_random.string(‘x’, 128)||‘’‘’;
exception
when others then
raise_application_error ( -20001, substr (‘第’||i||‘次执行失败,’ ||SQLCODE|| ’ ’ ||SQLERRM|| ’ ’ ||dbms_utility.format_error_backtrace, 1, 400 ));
end;
end loop;
end;
/
ROLLBACK;
declare
begin
for i in 1…176
loop
begin
execute immediate ‘update nidate set id’||i||‘=’‘’||dbms_random.string(‘x’, 30)||‘’‘’;
exception
when others then
raise_application_error ( -20001, substr (‘第’||i||‘次执行失败,’ ||SQLCODE|| ’ ’ ||SQLERRM|| ’ ’ ||dbms_utility.format_error_backtrace, 1, 400 ));
end;
end loop;
end;
/
–第126次执行失败,-2665 记录超长 -2665[-20001]: line 1
ROLLBACK;
declare
begin
for i in 1…176
loop
begin
execute immediate ‘update nidate set id’||i||‘=’‘’||dbms_random.string(‘x’, 40)||‘’‘’;
exception
when others then
raise_application_error ( -20001, substr (‘第’||i||‘次执行失败,’ ||SQLCODE|| ’ ’ ||SQLERRM|| ’ ’ ||dbms_utility.format_error_backtrace, 1, 400 ));
end;
end loop;
end;
/
第95次执行失败,-2665 记录超长 -2665[-20001]: line 1
ROLLBACK;
declare
begin
for i in 1…176
loop
begin
execute immediate ‘update nidate set id’||i||‘=’‘’||dbms_random.string(‘x’, 41)||‘’‘’;
exception
when others then
raise_application_error ( -20001, substr (‘第’||i||‘次执行失败,’ ||SQLCODE|| ’ ’ ||SQLERRM|| ’ ’ ||dbms_utility.format_error_backtrace, 1, 400 ));
end;
end loop;
end;
/
ROLLBACK;
declare
begin
for i in 1…176
loop
begin
execute immediate ‘update nidate set id’||i||‘=’‘’||dbms_random.string(‘x’, 22)||‘’‘’;
exception
when others then
raise_application_error ( -20001, substr (‘第’||i||‘次执行失败,’ ||SQLCODE|| ’ ’ ||SQLERRM|| ’ ’ ||dbms_utility.format_error_backtrace, 1, 400 ));
end;
end loop;
end;
/
第170次执行失败,-2665 记录超长 -2665[-20001]: line 1

表启用超长列,176个字符型字段,每个字段填充1-21字节,没问题。22-40个字节,报错记录超长。40以上字节又没问题。请问达梦对记录长度的具体限制到底是什么样个神逻辑。试用测试了一段时间,各种莫名其妙的问题

回答 0
暂无回答
扫一扫
联系客服