Шаблонный инструмент препроцессора C++

Для SQL Server 2008 можно использовать табличный параметр . Это - немного работы, но это возможно более чисто, чем мой другой метод .

Первый, необходимо создать тип

CREATE TYPE dbo.TagNamesTableType AS TABLE ( Name nvarchar(50) )

Затем код ADO.NET похож на это:

string[] tags = new string[] { "ruby", "rails", "scruffy", "rubyonrails" };
cmd.CommandText = "SELECT Tags.* FROM Tags JOIN @tagNames as P ON Tags.Name = P.Name";

// value must be IEnumerable
cmd.Parameters.AddWithValue("@tagNames", tags.AsSqlDataRecord("Name")).SqlDbType = SqlDbType.Structured;
cmd.Parameters["@tagNames"].TypeName = "dbo.TagNamesTableType";

// Extension method for converting IEnumerable to IEnumerable
public static IEnumerable AsSqlDataRecord(this IEnumerable values, string columnName) {
    if (values == null || !values.Any()) return null; // Annoying, but SqlClient wants null instead of 0 rows
    var firstRecord = values.First();
    var metadata = SqlMetaData.InferFromValue(firstRecord, columnName);
    return values.Select(v => 
    {
       var r = new SqlDataRecord(metadata);
       r.SetValues(v);
       return r;
    });
}

5
задан Brian Tompsett - 汤莱恩 5 June 2016 в 13:10
поделиться

2 ответа

Comeau C ++ может "компилировать" C ++ в C. Это похоже на вашу цель, так как OpenCL не поддерживает C ++ - он намного ближе к C.

9
ответ дан 14 December 2019 в 01:14
поделиться

Такого инструмента нет - шаблоны являются частью языка, а не какой-то предварительной обработкой - они обрабатываются компилятором, как и другой код.

0
ответ дан 14 December 2019 в 01:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: