sql >> データベース >  >> RDS >> PostgreSQL

文字列であるCREATEFUNCTIONに続くコードは何を意味しますか?

    PostgreSQLは非常に拡張性が高く、たとえば、関数を記述するための独自の手続き型言語を定義できます。

    PostgreSQLは、特定の言語ハンドラーを呼び出さなければならないことを除いて、言語について何も知りません。 機能を実行します。

    これを実装するために選択された方法は、コードを文字列として渡すことを単純化することです。

    これは単なる実装の詳細であり、PostgreSQL関数が他のRDBMSよりもSQLインジェクションに対して多かれ少なかれ脆弱になることはありません。

    注射から身を守る必要があるいくつかのレベルがあります:

    • 関数の引数:ここでは、可能な限り文字列以外のデータ型を選択する必要があります。

    • 関数内のSQLステートメント:ここでは、可能な限り動的SQLを回避する必要があり、動的SQLを使用する必要がある場合は、%Lを使用して変数を挿入する必要があります。 formatのパターン 機能。

    繰り返しますが、これは関数本体が文字列として指定されているかどうかに関係なく同じです。



    1. 日付値を指定して IN パラメータ プロシージャを実行する場合、有効な月ではありません

    2. OracleBulkCopyメモリリーク(OutOfMemory例外)

    3. T-SQL SET演算子パート2:INTERSECTおよびEXCEPT

    4. 自動インクリメントの開始番号を変更しますか?