注册

临时表longvarchar长度超过900报无效的页错误

副班长 2024/03/18 646 9 已解决

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:8.0
【操作系统】:Win11
【CPU】:i7
【问题描述】*:往临时表的LongVarchar字段,写入超过900长度的字符器,再查询,返回的结果提示无效的页错误。

重现步骤:
1 新建临时表
CREATE GLOBAL TEMPORARY TABLE test_EditData2
(
PK_ID int,
LongStr1 longvarchar
) ON COMMIT DELETE ROWS;

2 写入数据
declare @Str longvarchar;
begin
set @Str = 'declare @Table_ID varchar(50);
begin
with Temp as (select a.hw_RowNo, a.VALUE as Table_ID, b.VALUE as Field_ID from Tmp_GridData a join Tmp_GridData b
on a.hw_RowNo = b.hw_RowNo and a.Field_ID = ''Table_ID'' and b.Field_ID = ''Field_ID''),
TempA as (select a.hw_RowNo, b.DATA_TYPE, convert(varchar,b.Data_Length) as Data_Length,
convert(varchar, b.Data_Precision) as Data_Precision, convert(varchar, b.Data_Scale) as Data_Scale
from Temp a join All_Tab_Cols b on a.Table_ID = b.TABLE_NAME and a.Field_ID = b.COLUMN_NAME)
update Tmp_GridData a set a.VALUE = case
when b.DATA_TYPE in (''char'',''varchar'') then b.DATA_TYPE + ''('' + Data_Length + '')''
when ''DECIMAL'' then b.DATA_TYPE + ''('' + Data_Precision + '','' + Data_Scale + '')''
else b.DATA_TYPE end
from Tmp_GridData a join tempA b on a.hw_RowNo = b.hw_RowNo and a.Field12345678901234567890123456789011;
';

insert test_EditData2 (PK_ID, LongStr1) values(1, @Str);
select PK_ID, LongStr1 from test_EditData2;

select len(@Str);
end

3 查看LongStr1字段的数据,提示以下错误:
image.png

4 在用C#获取表返回数据时,也提示同样的错误

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