0

我正在尝试使用临时表将 SQLBase LONG VARCHAR 列转换/转换为 VARCHAR 列。

正在使用的源表有一个“long varchar”类型的注释字段列。我找不到正确的语法来使用转换/转换函数。

如果我尝试如下隐式转换/转换,我收到的错误是

错误:01627 TYP LON 无效的数据类型(长期预期)

create table SYSADM.TMP_STUDENT_ (
    STUDENT_NO integer,
    STUDENT_COMMENTS nvarchar(255)
) pctfree 10;

insert into SYSADM.TMP_STUDENT_ (
    STUDENT_NO ,
    STUDENT_COMMENTS ) select
    STUDENT_NO,
    STUDENT_COMMENTS 
from SYSADM.STUDENT;

grant all on SYSADM.TMP_STUDENT_ to PUBLIC;

4

1 回答 1

0

您不能在子选择中使用 LONG VARCHAR 列。

但是要实现您想要的,您可以运行 UNLOAD ( table ),然后运行 ​​LOAD ( into new Table )。

要查看这些命令的所有语法选项,请访问:SQLBase Books。下载您想要的版本,并阅读“语言参考”手册,特别是 UNLOAD 和 LOAD。如果语法正确,这将起作用-我以前做过,但是太多了,无法涵盖此处的所有选项..

或者,您可以编写一个存储过程(SQLBase Stored Procs 很棒 - 您可以像在 TD 中一样使用 SAL。如果您使用 SQLCommandCentre,则易于编写)从 SQLTalk 执行。在一个循环中,将 LONG col 读入 Long String,然后从 Long String 插入 varchar col。

于 2020-07-08T21:11:11.170 回答