sql - 在 SQL Server 中使用列名检索列值

标签 sql sql-server t-sql

我正在使用 SSMS 2014,我想使用 SQL Server 中的列名称检索列值。用户可以从表中选择任何列并检索该列的值。

示例:

exec employee Name 'karl' 

输出如下:

| Id | Name | ManagerId | ManagerName | Gender | Dept |
| 5  | Karl |   1       | Luke        |   M    |  1   |

我正在创建程序来解决此问题,但我没有在输出中获得任何值。

Create proc sp_getEmpDetail
    @colname varchar(50),
    @colvalue varchar(50)
as
    Select * 
    from employees1 
    where @colname = @colvalue

我没有从输出中获得任何值(value)。

当我调试它时,变量会获取我提供的值。

请帮忙解决这个问题。

提前致谢。

最佳答案

--for this you need to create a dynamic Query

Create proc sp_getEmpDetail
@colname varchar(50),
@colvalue varchar(50)
AS
    DECLARE @Sql_String NVARCHAR(MAX)

    SET @Sql_String='Select * from employees1  where '+@colname+' = '''+@colvalue+''''
    PRINT @Sql_String
    EXEC(@Sql_String)
END

关于sql - 在 SQL Server 中使用列名检索列值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45518757/

相关文章:

c# - SqlDataAdapter 插入后获取标识

sql-server - 大数据集聚合查询的优化

sql-server - 编辑结果网格中的数据

php - 如何从数据库制作动态菜单模块

mysql - 在 phpMyAdmin 中的数据库表上触发查询时出现问题。获取 0 行作为结果

C# SqlCommand - 不能为列名使用参数,如何解决?

sql - 使连接条件更具排他性会导致查询挂起

sql - 生成多个UPDATE语句并执行它们

sql-server - 提高表值函数性能

sql - 我应该使用什么 sql 数据类型来存储以毫秒为单位的执行时间?