将Long转换为Varchar2

Kri*_*iti 3 sql oracle

我试图从长列插入varchar2列.这是下面的例子,TEXT.TEXT_COL = VARCHAR2(4000)NOTE.TEXT_NOTE = LONG.

INSERT INTO TEXT(ROW_ID, TEXT_COL)
SELECT 1, TEXT_NOTE FROM NOTE; 
Run Code Online (Sandbox Code Playgroud)

当我运行上面的SQL我得到错误

SQL错误:ORA-00997:非法使用LONG数据类型

我也用过TO_LOB(),但仍然是同样的错误.

是否有任何功能只是简单地转换long并放入其中varchar2.让我知道你的想法.

小智 7

如果有某些限制,则无法使用单个语句转换longvarchar2立即使用单个语句long.

您可以创建临时表或使用PL/SQL代码来解决您的问题:

  • 临时表:

    CREATE TABLE TABLE2 AS SELECT TO_LOB(COLUMN1) COLUMN FROM TABLE1;

  • PL/SQL代码:

    DECLARE
      VAR1 LONG;
      VAR2 VARCHAR2(4000);
    BEGIN
      SELECT TEXT INTO VAR1 FROM USER_VIEWS WHERE ROWNUM = 1;  
      VAR2 := SUBSTR(VAR1, 1, 4000);
      DBMS_OUTPUT.PUT_LINE(VAR2);
    END;
    
    Run Code Online (Sandbox Code Playgroud)