用的是sql developer3.0自带的迁移工具,参照http://www.51cto.com/php/viewart.php?ID=275067因为sql中有个自定义类型,结果在生成的迁移sql中有类似语句
CREATE TABLE UDT
(
  ADDRESS_TYPE NUMBER(5,0) 
)CREATE GLOBAL TEMPORARY TABLE tt_v_address
(
  address UDT.ADDRESS_TYPE%TYPE 
)
但是create table 好像不支持%TYPE这种写法啊 命令出错, 行: 15,298 列: 26
错误报告:
SQL 错误: ORA-00911: 无效字符
00911. 00000 -  "invalid character"
*Cause:    identifiers may not start with any ASCII character other than
后来试了一下,好像 create procedure function等都可以直接引用 表列的%type类型,create table 却不能。
是不是这样的?         

解决方案 »

  1.   

    有哪位大侠碰到过类似情况吗?Oracle的自动迁移工具生成的SQL好像不合语法 ,就是在create temporary table 时引用其他表的字段类型, 用%type的形式。
      

  2.   

    %TYPE 这个只能用在pl中
    creat table 是ddl 
    有些东西不能乱来
      

  3.   

    %Type这个类型不能随便用,
    在创建数据中,要想要必须要在PL/SQL中用
    使用软件plsqldevelopment中用
      

  4.   

    CREATE   GLOBAL   TEMPORARY   TABLE
    借你的问题 我才学习到这是什么
      

  5.   


    这是自动生成的。
    不知道你用过迁移工具OMW没有?就是oracle migration wizard,就是oracle sql developer 3.0自带的
    参见 http://www.51cto.com/php/viewart.php?ID=275067
    --比如这样建一个非常简单的测试用的SQL Server库。create database test
    go
    use test
    go
    create type mytype from bigint
    go
    create function tabfunc (@para int)
    returns @result table (colsa mytype)
    as
    begin
        insert @result select 3
        return
    end
    go--下面就是迁移到oracle时会自动生成的迁移代码(部分)--UDT DEFINITION
    CREATE TABLE UDT(  mytype NUMBER(19,0) );connect dbo_test/dbo_test;
    connect dbo_test/dbo_test;
    /*Global Temporary Tables:1 *//* Translation Extracted DDL For Required Objects*/
    CREATE GLOBAL TEMPORARY TABLE tt_v_result(  colsa UDT.MYTYPE%TYPE );
    /