Lo que intento hacer es crear algún comando sql arbitrario con parámetros, establecer los valores y tipos de los parámetros, y luego devolver el comando sql analizado, con los parámetros incluidos. No ejecutaré directamente este comando en una base de datos sql, por lo que no será necesaria ninguna conexión. Así que si me encontré a continuación el programa de ejemplo, yo esperaría a ver el texto siguiente (o algo similar):¿Es posible obtener el texto analizado de un SqlCommand con SqlParameters?
WITH SomeTable (SomeColumn)
AS
(
SELECT N':)'
UNION ALL
SELECT N'>:o'
UNION ALL
SELECT N'^_^'
)
SELECT SomeColumn FROM SomeTable
Y el programa de ejemplo es:
using System;
using System.Data;
using System.Data.SqlClient;
namespace DryEraseConsole
{
class Program
{
static void Main(string[] args)
{
const string COMMAND_TEXT = @"
WITH SomeTable (SomeColumn)
AS
(
SELECT N':)'
UNION ALL
SELECT N'>:o'
UNION ALL
SELECT @Value
)
SELECT SomeColumn FROM SomeTable
";
SqlCommand cmd = new SqlCommand(COMMAND_TEXT);
cmd.CommandText = COMMAND_TEXT;
cmd.Parameters.Add(new SqlParameter
{
ParameterName = "@Value",
Size = 128,
SqlDbType = SqlDbType.NVarChar,
Value = "^_^"
});
Console.WriteLine(cmd.CommandText);
Console.ReadKey();
}
}
}
Es esto algo que se puede lograr usando las bibliotecas .net estándar? La búsqueda inicial dice que no, pero espero estar equivocado.
Gracias, esto es exactamente lo que necesitaba escuchar. Saber que sp_executesql es lo que se llama detrás de escena explica todo. – Burg