Как получить имена таблиц и их псевдонимов с помощью библиотеки Microsoft ScriptDomC#

Место общения программистов C#
Anonymous
Как получить имена таблиц и их псевдонимов с помощью библиотеки Microsoft ScriptDom

Сообщение Anonymous »

Привет, я использую синтаксический анализатор Microsoft ScriptDOM (Microsoft.SqlServer.TransactSql.ScriptDom) для анализа SQL-запросов.
Для принятия решений в моей логике я хочу знать все имена таблиц и их псевдонимы в SQL. строка оператора (по сути, оператор MERGE sql)
В приведенном ниже sql я хочу извлечь имя и псевдоним таблицы и сохранить их в словаре следующим образом:
[key: t_dpatch_parent , значение: a]
[key: t_dpatch_child , значение: b]
MERGE INTO t_dpatch_parent a
USING t_dpatch_child b
ON (a.student_id = b.student_id)
WHEN MATCHED THEN
UPDATE SET a.Proposed_Fee = b.collage_fee

Я использовал этот код, но он дает псевдоним: null для таблицы: t_dpatch_parent. В этом случае следует добавить псевдоним: a
class TableAliasVisitor : TSqlFragmentVisitor
{
private readonly Dictionary _tableAliases = new Dictionary();
public Dictionary TableAliases
{
get { return _tableAliases; }
}

public override void Visit(NamedTableReference node)
{
string tableName = node.SchemaObject.BaseIdentifier.Value;
string tableAlias = node.Alias?.Value;
_tableAliases[tableName] = tableAlias;

base.Visit(node);
}
}


Подробнее здесь: https://stackoverflow.com/questions/777 ... om-library

Вернуться в «C#»