オラクルへの移行はそれほど簡単ではないため、私の質問に答えたいと思いますが、頭痛の少ないWindowsまたはLinuxで誰でもオラクルに移行するのに役立つヒントがいくつかあります。
Sql開発者ツールが最初に行うことは、ストアドプロシージャ、制約、トリガーなどを含むsqlserverスキーマとデータをOracleに移行することです.
また、データ型のマッピングも適切に行い、必要に応じてデータ型を再マップするオプションを提供します。
いくつかの注意事項と注意事項。
Oracle では、ストアド プロシージャ名の長さは約 30 文字に制限されています。これは、名前が 30 文字を超える移行 SP または識別子が切り捨てられる場合があるため、手動で名前を変更する必要がある領域です。
直面する可能性のある他の一般的な問題は、日付の挿入とフォーマットに関するものです。次のスニペットを使用して、頭痛を避けることができます。よくあるエラーは「有効な月ではありません」です。
OracleConnection conn = 新しい OracleConnection(oradb); // C# conn.Open(); OracleGlobalization セッション = conn.GetSessionInfo(); session.DateFormat = "DD.MM.RR"; // ここで必要に応じてフォーマットを変更します conn.SetSessionInfo(session);
- 最も厄介なエラーは、データの挿入または更新時の文字から数値への変換、または関連するエラーです。
ここでの問題は、SQL プロバイダーのコマンド オブジェクトにパラメーターを追加すると、バインディングは名前で行われますが、Oracle.DataAccess のデフォルトのバインディングは位置によるものです。これが私の頭痛の種を救った投稿です。
uintデータ型のODP .NETパラメータの問題
できることは、command.BindByName = true; を設定することです。
- データを返す SP を移行する場合、Oracle は出力パラメータ参照カーソルを作成します。これは、コマンド パラメータを作成する際に注意する必要があります。
たとえば、OracleParameter refp = new Oracle.DataAccess.Client.OracleParameter("cv_1", OracleDbType.RefCursor, ParameterDirection.InputOutput);
command.Parameters.Add(refp);
また、sqlserver では、SP へのパラメーターの前に「@」を付ける必要がありますが、oracle では必要ありません。これは、データ層で簡単に処理できます。
また、Oracle には bit データ型がないため、number(1) は正常に機能します。必要に応じて、bool を数値に変換する必要がある場合があります。
これが誰かが移行の頭痛の種を避けるのに役立つことを願っています. 遭遇した場合は、さらに問題を投稿します。