从表中选择@field作为参数

时间:2015-06-23 15:32:51

标签: asp.net sql-server parameter-passing

我有一个数据库表,其中有一些列,例如" col_a"," col_b"我想只检索它的一列。但该列依赖于某些用户选择。有时可能是col_a,col_b,c .... 所以我的问题是我是否可以从表中选择一个字段作为参数? 我想像这样设置@colName ......

    <asp:SqlDataSource ID="sdsOrderErrors" runat="server" ConnectionString="<%$ ConnectionStrings:CS %>" SelectCommand="SELECT @colName AS fld FROM [a_table]">
        <SelectParameters>
            <asp:QueryStringParameter Name="colName" QueryStringField="colName" Type="String" />
        </SelectParameters>
    </asp:SqlDataSource>

或代码背后。 有什么想法吗?

1 个答案:

答案 0 :(得分:2)

如果从代码隐藏工作中执行此操作,那么您可以执行类似

的操作
sdsOrderErrors.SelectCommand = string.Format("SELECT {0} AS fld FROM [a_table]", colName);

(OR)有一个存储过程来接受参数并执行动态查询以实现相同的

create procedure usp_testSelect(@colname varchar(30))
as
begin
declare @sql varchar(200);
set @sql = 'select '+ @colname + ' AS fld FROM [a_table]';
exec(@sql);
end

然后在ASP.NET SQLDataSource

中使用此过程