ホームページ > バックエンド開発 > Golang > Golang のエラー「ORA-00911: 無効な文字」を解決するにはどうすればよいですか?

Golang のエラー「ORA-00911: 無効な文字」を解決するにはどうすればよいですか?

WBOY
リリース: 2024-02-08 21:39:23
転載
781 人が閲覧しました

如何解决 Golang 中的错误“ORA-00911:无效字符”?

Golang の開発プロセス中に、「ORA-00911: 無効な文字」などのエラーが発生することがあります。このエラーは通常、SQL ステートメントで無効な文字が使用されていることが原因で発生します。この問題を解決するには、いくつかの簡単な方法を採用できます。まず、SQL ステートメントを実行する前に、ステートメントに特殊文字や無効な文字が含まれているかどうかを注意深く確認する必要があります。次に、エラーを避けるために、特殊文字を含むフィールドまたは値を引用符で囲むことができます。さらに、エスケープ文字を使用して特殊文字を処理し、SQL ステートメントで特殊文字が正しく認識され、処理されるようにすることもできます。これらの方法を通じて、Golang の「ORA-00911: 無効な文字」問題を効果的に解決し、プログラムが正常に実行できることを確認できます。

質問内容

以下の関数を呼び出す際に「ORA-00911: 無効な文字」というエラーが発生しました。ハードコードされた値を含む SQL クエリを使用すると (現時点では、以下のスニペットでコメントアウトされています)、Postman の JSON 応答でデータベース レコードを問題なく取得できます。つまり、私の議論は間違っているようです。参考までに、私は「github.com/sijms/go-ora/v2」パッケージを使用して oracle db に接続しています。 また、「DashboardRecordsRequest」構造はデータ モデル パッケージ内にありますが、参照のために以下のスニペットに貼り付けました。 POC を行うときは、ストアド プロシージャを使用して Oracle と対話することに注意してください。

Postman リクエストのペイロード:

リーリー

実行コード:

リーリー

リクエストテーブルの構造:

リーリー ###間違い:###
<code>{
    "username": "UserABC",
    "startindex": 0,
    "pagesize": 10,
    "sortby": "requestnumber",
    "sortorder": "DESC"
}
</code>
ログイン後にコピー

回避策

当面の問題は、予期される

:var

フォームではなく、JDBC スタイルの ??? バインディング プレースホルダーを使用していることです。 go-ora パッケージのドキュメント から、次のものを使用していると述べています: したがって、stmt

は次のようになります: リーリー ただし、変数以外のものをバインドすることはできないため、単に削除して次のようにした場合、

sortorder

を変数として持つことはできません。 リーリー これは機能しているように見えますが、ソートは値ではなくリテラルの列名でソートされるため、これでも希望どおりには動作しません。したがって、ORDER BY 'requestnumber'## として機能します。 # に相当するものは、

ORDER BY requestnumber

の代わりに実行されます。そして、その定数文字列で並べ替えても何も達成されません。 ステートメントに順序付け基準を埋め込む必要があります: リーリー

db<>fiddle

PL/SQL 動的カーソルを簡略化した同等のものとして使用すると、3 つのバージョンが表示されます。1 つはエラーが発生し、1 つは期待どおりに順序付けされず、最後に 1 つは正常に順序付けされました。 。

ただし、SQL インジェクションが再び行われないように、これらの入力をサニタイズする必要もあります。

以上がGolang のエラー「ORA-00911: 無効な文字」を解決するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:stackoverflow.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート