■
[S2Container.NET] ADO.NETのパラメータマーカー
id:rmiya:20060707にも少し書きましたが、.NET Framework Data ProviderがサポートしているADO.NETのパラメータマーカーに一致する正規表現は、System.Data.Common.DbConnection.GetSchemaメソッドから取得することが可能です。
MSDNには、
たとえば、パラメータ名に "@" という前置文字が含まれている、名前付きパラメータがサポートされている場合、"(@[A-Za-z0-9_$#]*)" となります。
と記述されていたので実装もそうなっているのだろう、と思い込んでいたのですが違いました。
各.NET Framework Data Providerが返す値は次のとおりです。
System.Data.SqlClient.SqlConnection
@[\p{Lo}\p{Lu}\p{Ll}\p{Lm}_@#][\p{Lo}\p{Lu}\p{Ll}\p{Lm}\p{Nd}\uff3f_@#\$]*(?=\s+|$)
System.Data.OleDb.OleDbConnection
\?
System.Data.Odbc.OdbcConnection
\?
System.Data.OracleClient.OracleConnection
:([\p{Lo}\p{Lu}\p{Ll}\p{Lm}__#$][\p{Lo}\p{Lu}\p{Ll}\p{Lm}\p{Nd}__#$]*)