Question

Nous apportons un nouveau projet en interne et alors qu'auparavant tout notre travail se faisait sur SQL Server, le nouveau produit utilise un back-end Oracle.

Quelqu'un peut-il conseiller des feuilles de berceau ou autres qui donnent à une personne SQL Server comme moi un aperçu des principales différences - J'aimerais pouvoir être opérationnel dès que possible.

Était-ce utile?

La solution

@hamishcmcn

Votre affirmation selon laquelle '' == Null n'est tout simplement pas vraie.Dans le monde relationnel, Null ne doit être lu que comme signifiant « je ne sais pas ».Le seul résultat que vous obtiendrez d'Oracle (et de la plupart des autres bases de données décentes) lorsque vous comparerez une valeur à Null est « Faux ».

De mémoire, les principales différences entre SQL Server et Oracle sont :

  • Apprenez à aimer les transactions, elles sont vos amies – la validation automatique ne l’est pas.
  • Cohérence de la lecture et absence de lectures bloquantes
  • Base de données SQL Server == Schéma Oracle
  • PL/SQL est beaucoup plus riche en fonctionnalités que T-SQL
  • Découvrez la différence entre une instance et une base de données dans Oracle
  • Vous pouvez avoir plusieurs instances Oracle sur un serveur
  • Pas d'assistants pointus et cliquables (sauf si vous les voulez vraiment, vraiment)

Tout le monde, s'il vous plaît, aidez-moi et ajoutez-en plus.

Autres conseils

La principale différence que j'ai remarquée lors du passage de SQL Server à Oracle était que dans Oracle, vous devez utiliser des curseurs dans les instructions SELECT.De plus, les tables temporaires sont utilisées différemment.Dans SQL Server, vous pouvez en créer une dans une procédure, puis la SUPPRIMER à la fin, mais dans Oracle, vous êtes censé avoir déjà créé une table temporaire avant l'exécution de la procédure.

Je regarderais aussi les types de données car ils sont assez différents.

Concaténation de chaînes :
Oracle:|| ou concat ()
Serveur SQL:+

Ces liens pourraient être intéressants :
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 (le vieux:Ora9 contre SQL 2000)

@hamishmcn

En général, c'est une mauvaise idée.Les tables temporaires dans Oracle doivent simplement être créées et laissées (à moins que ce ne soit une fois/très rarement utilisée).Le contenu de la table temporaire est local à chaque session et tronqué à la fermeture de la session.Il ne sert à rien de payer le coût de création/suppression de la table temporaire, cela pourrait même entraîner des conflits si deux processus tentent de créer la table en même temps et des validations inattendues lors de l'exécution de DDL.

Ce que vous avez demandé ici est un sujet énorme, d'autant plus que vous n'avez pas vraiment dit pourquoi vous utilisez la base de données (par exemple, allez-vous passer de TSQL -> PL/SQL ou simplement changer la base de données principale de votre application Java est connecté à?)

Si vous envisagez sérieusement d'utiliser votre choix de base de données à son plein potentiel, je vous suggère de creuser un peu plus et de lire quelque chose comme Architecture de base de données Oracle experte :Techniques et solutions de programmation 9i et 10g par Tom Kyte.

Faites attention à la différence dans la façon dont la chaîne vide est traitée.
INSERT INTO atable (a_varchar_column) VALUES ('');

est le même que

INSERT INTO atable (a_varchar_column) VALUES (NULL);

je n'ai pas sqlserver expérience, mais je comprends que cela fait la différence entre les deux

Si vous en avez besoin, vous pouvez créer et supprimer des tables temporaires dans les procédures à l'aide de l'outil Exécuter immédiatement commande.

à andy47, je ne voulais pas dire que vous pouvez utiliser la chaîne vide dans une comparaison, mais Oracle la traite comme nulle si vous l'utilisez dans une insertion.Relisez mon entrée, puis essayez le SQL suivant :

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

Et pour éviter une situation de type "oui, non, ce n'est pas le cas", voici un lien externe

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top