首页 > 解决方案 > SQL数据库中如何使用SELECT+参数+FROM?

问题描述

我想知道是否可以创建这样的查询:

SELECT :parameterA, :paramaterB 
FROM *someTable*;

这个想法是使用类似的结构而不是制作某种字符串或类似的东西。

我正在使用 SQL 数据库和 Visual Studio 2019 中的 C# 项目。

到目前为止,我有这个代码:

    public List<V_Requerimientos> GetData(int idEmpresa, string columns)
    {
        List<V_Requerimientos> result = null;

        try
        {
            var dyParam = new OracleDynamicParameters();
            dyParam.Add("idEmpresa", OracleDbType.Int32, ParameterDirection.Input, value: idEmpresa);

            var conn = this.GetConnection();

            if (conn.State == ConnectionState.Closed)
            {
                conn.Open();
            }

            if (conn.State == ConnectionState.Open)
            {
                string query = "SELECT " + columns + "FROM V_REQUERIMIENTOS " +                      
                    "WHERE EMPR_CODIGO = :idEmpresa AND ETAR_CODIGO <> 4";
                result= conn.Query<V_Requerimientos>(query, dyParam).ToList();

                conn.Close();
            }
        }
        catch (Exception e)
        {
            throw e;
        }

        return result;
}

其中idEmpresa是前面选择的对象的 PK,columns 是一个字符串,其中包含我要为该对象选择的列。

我想知道是否无论如何都可以替换发送到该方法的参数的列,而不是像我目前使用的那样使用串联查询。

标签: c#sqlvisual-studio

解决方案


SQL 参数用于在 where 子句中指定值。您不会对列名使用参数。您的查询应该看起来更像这样。

string colA = "Customer Id";
string colB = "Customer Name";
string sql = $"Select [{colA}], [{colB}] from table";

推荐阅读