22 lines
1.0 KiB
Plaintext
22 lines
1.0 KiB
Plaintext
MergeIntoStatement <- WithClause? 'MERGE' 'INTO' TargetOptAlias MergeIntoUsingClause MergeMatch* ReturningClause?
|
|
MergeIntoUsingClause <- 'USING' TableRef JoinQualifier
|
|
MergeMatch <- MatchedClause / NotMatchedClause
|
|
MatchedClause <- 'WHEN' 'MATCHED' AndExpression? 'THEN' MatchedClauseAction
|
|
MatchedClauseAction <- UpdateMatchClause / DeleteMatchClause / InsertMatchClause / DoNothingMatchClause / ErrorMatchClause
|
|
UpdateMatchClause <- 'UPDATE' (UpdateMatchSetClause / ByNameOrPosition?)
|
|
DeleteMatchClause <- 'DELETE'
|
|
InsertMatchClause <- 'INSERT' (InsertValuesList / DefaultValues / InsertByNameOrPosition)?
|
|
InsertByNameOrPosition <- ByNameOrPosition? '*'?
|
|
InsertValuesList <- InsertColumnList? 'VALUES' Parens(List(Expression))
|
|
DoNothingMatchClause <- 'DO' 'NOTHING'
|
|
ErrorMatchClause <- 'ERROR' Expression?
|
|
UpdateMatchSetClause <- 'SET' (UpdateSetClause / '*')
|
|
AndExpression <- 'AND' Expression
|
|
NotMatchedClause <- 'WHEN' 'NOT' 'MATCHED' BySourceOrTarget? AndExpression? 'THEN' MatchedClauseAction
|
|
BySourceOrTarget <- 'BY' ('SOURCE' / 'TARGET')
|
|
|
|
|
|
|
|
|
|
|