翻译SQL以与Oracle一起使用

时间:2009-03-26 09:43:45

标签: sql-server oracle

我有2个Oracle问题

  1. 如何将此SQL Server语句翻译为适用于Oracle?

     Create table MyCount(Line int identity(1,1))
    
  2. 用于在Orace数据库中存储图片的SQL Server图像类型的等价物是什么?

3 个答案:

答案 0 :(得分:5)

1:你必须创建一个序列和一个触发器

 CREATE SEQUENCE MyCountIdSeq;
 CREATE TABLE MyCount (
     Line INTEGER NOT NULL,
     ...
 );
 CREATE TRIGGER MyCountInsTrg BEFORE INSERT ON MyCount FOR EACH ROW AS
 BEGIN
     SELECT MyCountIdSeq.NEXTVAL INTO :new.Line
 END;
 /

2:BLOB。

答案 1 :(得分:5)

如果您管理插入内容,则无需使用触发器:

CREATE SEQUENCE seq;

CREATE TABLE mycount
(
   line NUMBER(10,0)
);

然后,插入一个值:

INSERT INTO mycount(line) VALUES (seq.nextval);

对于图像,您可以使用BLOB来存储任何二进制数据,或使用BFILE来管理或多或少作为BLOB,但数据存储在文件系统中,例如{{1}文件。

参考文献:

答案 2 :(得分:1)

我们的工具可以为您解答这些问题。我正在谈论Oracle SQL Developer。

首先 - 它有一个Create Table向导 - 12 / 18c Database支持Identity列的本机实现。

enter image description here

你的新表DDL

CREATE TABLE MYCOUNT 
(
  LINE INT GENERATED ALWAYS AS IDENTITY NOT NULL 
);

另外,我们有一个转换器 - 它可以占用SQL Server位并将它们转换为等效的Oracle位。这是一个完整的迁移向导,可以捕获和转换整个数据模型。

但是对于一次性,你可以使用你的Scratchpad。它可以在Tools,Migrations菜单下找到。

这里是您的代码,并为您提供适用于任何Oracle数据库的内容。

enter image description here

如果您使用的是该版本的Oracle,请务必使用12 / 18c中的身份功能。要维护的数据库对象更少。