スポンサーリンク
スポンサーリンク

C#からの発行するPL-SQLの改行コードに「\n」は使えない

C#OraclePL/SQLVisual Studioデータベース

「C言語 + OCI」で実行されていたSQLを、C#へ移植する際、C言語の時に使われていた改行コード「\n」をそのままにし、C#からOracleに対しSQLを発行すると、以下のエラーが発生した。

ORA-06550: 行1、列2432: PLS-00103: 記号”end-of-file”が見つかりました。 次のうちの1つが入るとき:

   ( begin case declare end exception exit for goto if loop mod    null pragma raise return select update while with    <an identifier> <a double-quoted delimited-identifier>    <a bind variable> << continue close current delete fetch lock    insert open rollback savepoint set sql execute commit forall    merge pipe purge

declare、begin、end;を使うような長文SQLを、C#から単独実行する場合、プロシージャ化するしかないのかとも疑ったが、C言語の時、SQLの改行コードに使っていた「\n」が、C#では使えないのが原因だった。 「\r\n」へ置換する事で、このエラーは発生しなくなった。

改行コードが、\n、\r\n のどちらであっても、SQL Developerからはエラー無く実行でき、エラーMSGからは解決策を見いだせなかったのでハマった。

変更前

変更後

 

コメント

タイトルとURLをコピーしました