sql-server - online - sql developer sql server driver
Desarrollador pasando de SQL Server a Oracle (8)
Traemos un nuevo proyecto en casa y, mientras que antes todo nuestro trabajo estaba en SQL Server, el nuevo producto usa un back-end de 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.
Tenga cuidado con la diferencia en la forma en que se trata la cuerda vacía.
INSERT INTO atable (a_varchar_column) VALUES ('''');
es lo mismo que
INSERT INTO atable (a_varchar_column) VALUES (NULL);
No tengo experiencia en sqlserver
, pero entiendo que distingue entre los dos
La principal diferencia que noté al pasar de SQL Server a Oracle fue 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.
Si lo necesita, puede crear y eliminar tablas temporales en procedimientos utilizando el comando Ejecutar inmediato .
@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 demás bases de datos decentes) cuando compare un valor con Nulo es ''Falso''.
Por encima de todo, las principales diferencias entre SQL Server y Oracle son:
- Aprende a amar las transacciones, es tu amigo, la confirmación automática no.
- La coherencia de lectura y la falta de lecturas de bloqueo
- Base de datos SQL Server == Esquema Oracle
- PL / SQL es mucho más rico en características que T-SQL
- Aprende la diferencia entre una instancia y una base de datos en Oracle
- Puede tener más de una instancia de Oracle en un servidor
- No hay magos de clicky puntiagudos (a menos que realmente los quieras)
Todos los demás, ayúdenme y agreguen más.
@hamishmcn
En general, esa es una mala idea ... Las tablas temporales en Oracle deberían simplemente crearse y abandonarse (a menos que sea una vez apagado / muy raramente utilizado). 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.
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 de TSQL -> PL / SQL o simplemente cambiando la base de datos back-end de su aplicación java ¿está conectado a?)
Si realmente quiere usar la elección de su base de datos como su potencial, entonces le sugiero que profundice un poco y lea algo como Expert Oracle Database Architecture: 9i y 10g Programming Techniques and Solutions, de Tom Kyte.
Concatenación de cadenas:
Oracle: || o concat ()
Servidor Sql: +
Estos enlaces pueden ser interesantes:
http://www.dba-oracle.com/oracle_news/2005_12_16_sql_syntax_differences.htm
http://www.mssqlcity.com/Articles/Compare/sql_server_vs_oracle.htm (antiguo: Ora9 vs Sql 2000)
Para andy47, no quise decir que puede usar la cadena vacía en una comparación, pero Oracle lo trata como nulo si lo usa en una inserción. Vuelve a leer mi entrada, luego prueba el siguiente SQL:
CREATE TABLE atable (acol VARCHAR(10));
INsERT INTO atable VALUES( '''' );
SELECT * FROM atable WHERE acol IS NULL;
Y para evitar una situación de "sí lo es, no lo es", aquí hay un enlace externo