2008-09-02 10 views
7

Estamos trayendo un nuevo proyecto en la empresa y, mientras que antes todo nuestro trabajo estaba en SQL Server, el nuevo producto usa un back-end de Oracle.Desarrollador moviéndose de SQL Server a Oracle

¿Alguien puede aconsejar cualquier hoja de cuna o algo así le da a una persona de SQL Server como yo un resumen de cuáles son las principales diferencias? Me gustaría poder ponerme en funcionamiento lo antes posible.

+0

Este enlace proporciona un resumen útil de un montón de las principales diferencias: [Diferencias entre el servidor Oracle y ms sql] (http://www.bristle.com/Tips/SQL.htm#differences_between_oracle_and_ms_sql_server) –

Respuesta

3

@hamishcmcn

Su afirmación de que '' == null simplemente no es verdad. En el mundo relacional, Null solo debería leerse para significar "No sé". El único resultado que obtendrá de Oracle (y de la mayoría de las otras bases de datos decentes) cuando compare un valor con Nulo es 'Falso'.

De la parte superior de mi cabeza las principales diferencias entre SQL Server y Oracle son:

  • Aprende a las transacciones de amor, que son de su amigo - auto cometer es no.
  • Leer consistencia y la falta de bloqueo de base de datos lee
  • SQL Server == esquema de Oracle
  • PL/SQL es mucho más rico en características de T-SQL
  • aprender la diferencia entre una instancia y una base de datos en Oracle
  • puede tener más de una instancia de Oracle en el servidor
  • No hay magos luxación puntiagudos (a menos que realmente, realmente los quiere)

Todo el mundo De lo contrario, ayúdenme y agreguen más.

1

Tenga cuidado con la diferencia en la forma en que se trata la cadena vacía.
INSERT INTO atable (a_varchar_column) VALUES ('');

es lo mismo que

INSERT INTO atable (a_varchar_column) VALUES (NULL); 

que no tengo sqlserver experiencia, pero entiendo que diferencia entre los dos

2

La principal diferencia que noté al pasar de SQL Server a Oracle era que en Oracle necesitas usar cursores en las instrucciones SELECT. Además, las tablas temporales se usan de manera diferente. En SQL Server puede crear uno en un procedimiento y luego DROP al final, pero en Oracle se supone que ya debe tener una tabla temporal creada antes de que se ejecute el procedimiento.

Me gustaría ver los tipos de datos también, ya que son bastante diferentes.

1

@hamishmcn

Generalmente eso es una mala idea .. Las tablas temporales en Oracle simplemente deben ser creados y dejaron (a menos que su una vez apagado/muy rara vez se utiliza). El contenido de la tabla temporal es local para cada sesión y se trunca cuando se cierra la sesión. No tiene mucho sentido pagar el costo de crear/eliminar la tabla temporal, incluso podría generar conflictos si dos procesos intentan crear la tabla al mismo tiempo y compromisos inesperados de realizar DDL.

1

Lo que ha preguntado aquí es un tema enorme, especialmente porque realmente no ha dicho para qué está utilizando la base de datos (por ejemplo, va a ir desde TSQL -> PL/SQL o simplemente cambiando el servidor) base de datos está conectada su aplicación java?)

Si realmente quiere usar su elección de base de datos a su potencial, entonces le sugiero que profundice un poco y lea algo como Expert Oracle Database Architecture: 9i and 10g Programming Techniques and Solutions por Tom Kyte.

0

a andy47, no me refiero a que puede utilizar la cadena vacía en una comparación, pero Oracle la considera nula si la usa en una inserción. Vuelva a leer mi entrada, a continuación, tratar el siguiente código SQL:

CREATE TABLE atable (acol VARCHAR(10)); 
INsERT INTO atable VALUES(''); 
SELECT * FROM atable WHERE acol IS NULL; 

y evitar un "sí lo es, no, no es" la situación, here is an external link

Cuestiones relacionadas