Skip to main content

SQLのスキャンルール

 

Contrast Scanでは、SQLに対して以下のルールをサポートしています。

深刻度

Contrastルール

エンジンルールID

説明

重大

Detect Unaware Cross Joins

OPT.SQL.SQL_PB.DetectUnawareCrossJoins

DetectUnawareCrossJoins:クエリにおける「意図しない」デカルト積の発生の回避

重大

Fetch And Declare Same Fields

OPT.SQL.SQL_PB.FetchAndDeclareSameFields

FetchAndDeclareSameFields:カーソルフィールド数の一致(DECLARE CURSOR文で指定した取得するフィールド数はFETCH文で指定したフィールド数と一致している必要あり)

重大

Avoid Correlated Sub Selects

OPT.SQL.SQL_PERFORMANCE.AvoidCorrelatedSubSelects

AvoidCorrelatedSubSelects:外側のSELECT文で定義した列を使用するネストしたSELECT文の回避

重大

Cursor For Update Where Current

OPT.SQL.SQL_PERFORMANCE.CursorForUpdateWhereCurrent

CursorForUpdateWhereCurrent:カーソルがFOR UPDATEで宣言されている場合のDELETEおよびUPDATEにおける、WHERE CURRENT句の使用

重大

Dont Select Known Fields

OPT.SQL.SQL_PERFORMANCE.DontSelectKnownFields

DontSelectKnownFields:SELECTクエリにおけるWHERE句で使用するフィールド取得の禁止

Avoid Scroll Cursor

OPT.SQL.AvoidScrollCursor

AvoidScrollCursor:SCROLL CURSOR句の使用禁止

Check Updt Dlt Rowset

OPT.SQL.CheckUpdtDltRowset

CheckUpdtDltRowset:MULTIROWオプション付きのUPDATE文またはDELETE分における、FOR ROW n OF ROWSET句の使用制限

Check Insert Not Atomic

OPT.SQL.CheckInsertNotAtomic

CheckInsertNotAtomic:MULTIROWオプション付きのSELECT文における、NOT ATOMIC CONTINUE ON SQLEXCEPTIONの使用制限

Avoid Dynamic SQL

OPT.SQL.AvoidDynamicSql

AvoidDynamicSql:動的SQL使用の回避

Avoid Lock Table

OPT.SQL.AvoidLockTable

AvoidLockTable:LOCK TABLE文の使用の回避

Avoid Numeric References In By Clauses

OPT.SQL.SQL_MAINTAINABILITY.AvoidNumericReferencesInByClauses

AvoidNumericReferencesInByClauses:* BY句における数値インデックスによる列参照の禁止

Use The As Keyword

OPT.SQL.SQL_MAINTAINABILITY.UseTheAsKeyword

UseTheAsKeyword:テーブルのエイリアス設定時におけるASキーワードの使用

Avoid Declared Unopened Cursors

OPT.SQL.SQL_PERFORMANCE.AvoidDeclaredUnopenedCursors

AvoidDeclaredUnopenedCursors:カーソルを宣言した場合のオープン(OPEN文でカーソルを開く必要あり)

Avoid For Update Wait Forever

OPT.SQL.SQL_PERFORMANCE.AvoidForUpdateWaitForever

AvoidForUpdateWaitForever:NOWAITまたはWAIT nを指定しないFOR UPDATEの使用の回避

Avoid Opened Unclosed Cursors

OPT.SQL.SQL_PERFORMANCE.AvoidOpenedUnclosedCursors

AvoidOpenedUnclosedCursors:カーソルをオープンした場合のクローズ(CLOSE文でカーソルを閉じる必要あり)

Avoid Opened Unused Cursors

OPT.SQL.SQL_PERFORMANCE.AvoidOpenedUnusedCursors

AvoidOpenedUnusedCursors:カーソルをオープンした場合の使用(カーソルを使用してデータを取得する必要あり)

Avoid Union

OPT.SQL.SQL_PERFORMANCE.AvoidUnion

AvoidUnion:UNIONによる選択の回避

No Current Clause

OPT.SQL.SQL_PERFORMANCE.NoCurrentClause

NoCurrentClause:CURRENT句を含むSQLクエリの使用制限(負荷が大きいため、必要な場合にのみ使用する必要あり)

情報

Avoid Concat Operator

OPT.SQL.AvoidConcatOperator

AvoidConcatOperator:連結演算子の使用の回避

情報

Avoid Current Server

OPT.SQL.AvoidCurrentServer

AvoidCurrentServer:CURRENT SERVERの使用禁止

情報

Avoid Numeric Cursor

OPT.SQL.AvoidNumericCursor

AvoidNumericCursor:適切でないカーソル名の命名

情報

Avoid Current Time

OPT.SQL.AvoidCurrentTime

AvoidCurrentTime:CURRENT TIMEの使用禁止

情報

Avoid Current Date

OPT.SQL.AvoidCurrentDate

AvoidCurrentDate:CURRENT DATEの使用禁止

情報

Avoid Non Declared Cursor

OPT.SQL.AvoidNonDeclaredCursor

AvoidNonDeclaredCursor:事前に宣言されていないカーソルの使用

情報

Avoid Current Timestamp

OPT.SQL.AvoidCurrentTimestamp

AvoidCurrentTimestamp:CURRENT TIMESTAMP、CURRENT DATE、CURRENT TIMEの使用禁止

情報

Check Nulls In Select Count

OPT.SQL.CheckNullsInSelectCount

CheckNullsInSelectCount:COUNT関数を含むクエリにおけるNULLインジケータの使用禁止

情報

Use Null Indicator

OPT.SQL.UseNullIndicator

UseNullIndicator:MAX、MIN、AVG、SUM関数を使用したクエリにおけるNULLインジケータの使用

情報

Avoid Non Qualified Joins

OPT.SQL.SQL_PORTABILITY.AvoidNonQualifiedJoins

AvoidNonQualifiedJoins:結合の種類の明示

Do Not Use Negation In Where

OPT.SQL.DoNotUseNegationInWhere

DoNotUseNegationInWhere:否定演算子の使用禁止

Avoid Whenever

OPT.SQL.AvoidWhenever

AvoidWhenever:WHENEVER句の使用禁止

Avoid Host Operations

OPT.SQL.AvoidHostOperations

AvoidHostOperations:WHERE句における算術演算の実行の回避

Avoid Having

OPT.SQL.AvoidHaving

AvoidHaving:HAVING句の使用禁止

Check Simple Condition

OPT.SQL.CheckSimpleCondition

CheckSimpleCondition:WHERE句の条件の簡略化

Avoid Qualified Tables In Queries

OPT.SQL.SQL_MAINTAINABILITY.AvoidQualifiedTablesInQueries

AvoidQualifiedTablesInQueries:クエリ内でのテーブル名の修飾の回避

One SQL Statement Per Line

OPT.SQL.SQL_MAINTAINABILITY.OneSQLStatementPerLine

OneSQLStatementPerLine:1行に1つのSQL文のみを書き込み

Qualified Tables In Queries

OPT.SQL.SQL_MAINTAINABILITY.QualifiedTablesInQueries

QualifiedTablesInQueries:クエリで参照されるすべてのテーブル名を修飾することが必要

Avoid Insert Without Fields Specification

OPT.SQL.SQL_PB.AvoidInsertWithoutFieldsSpecification

AvoidInsertWithoutFieldsSpecification:すべてのINSERT文におけるフィールドの指定の必要性(例:INSERT INTO table(column1,column2) VALUES (value1,value2))

Avoid Group By

OPT.SQL.SQL_PERFORMANCE.AvoidGroupBy

AvoidGroupBy:GROUP BY句の使用の回避

Avoid Case In Select

OPT.SQL.AvoidCaseInSelect

AvoidCaseInSelect:CASE句の使用禁止

Check Number Tables

OPT.SQL.CheckNumberTables

CheckNumberTables:複数のテーブルを含むクエリの記述の制限

Fully Qualified Names In Columns

OPT.SQL.SQL_MAINTAINABILITY.FullyQualifiedNamesInColumns

FullyQualifiedNamesInColumns:列名を参照する際の修飾名の使用

Avoid Natural Joins

OPT.SQL.SQL_PB.AvoidNaturalJoins

AvoidNaturalJoins:NATURAL JOINの回避(バグが発生しやすくメンテナンス困難なため)

Avoid Nested Selects

OPT.SQL.SQL_PERFORMANCE.AvoidNestedSelects

AvoidNestedSelects:ネストしたSELECT文の回避

Avoid Queries On Many Tables

OPT.SQL.SQL_PERFORMANCE.AvoidQueriesOnManyTables

AvoidQueriesOnManyTables:多くのテーブルを参照するJOINクエリの回避

Avoid Select Asterisk

OPT.SQL.SQL_PERFORMANCE.AvoidSelectAsterisk

AvoidSelectAsterisk:SELECT *の使用禁止

Avoid Too Many Joins

OPT.SQL.SQL_PERFORMANCE.AvoidTooManyJoins

AvoidTooManyJoins:JOINが多すぎるクエリの回避

Detect Implicit Joins

OPT.SQL.SQL_PERFORMANCE.DetectImplicitJoins

DetectImplicitJoins:暗黙的なJOINの使用禁止

Prefer On Over Using

OPT.SQL.SQL_PORTABILITY.PreferOnOverUsing

PreferOnOverUsing:USING句をそれと等価のON句へ置換することを推奨