我可以在SQL存储过程中传递列名作为输入参数
发布时间:2020-12-12 07:05:45 所属栏目:MsSql教程 来源:网络整理
导读:create procedure sp_First@columnname varcharASbeginselect @columnname from Table_1end exec sp_First 'sname' 我的要求是将列名作为输入参数传递。 我尝试过,但是输出错误。 所以帮我 解决方法 你可以用几种方法来做到这一点。 一个是自己建立查询并执
create procedure sp_First @columnname varchar AS begin select @columnname from Table_1 end exec sp_First 'sname' 我的要求是将列名作为输入参数传递。 所以帮我 解决方法你可以用几种方法来做到这一点。一个是自己建立查询并执行它。 SET @sql = 'SELECT ' + @columnName + ' FROM yourTable' sp_executesql @sql 如果您选择该方法,请非常确定您的输入。即使您知道您的应用程序只会提供“真实”列名称,如果某些人在您的安全中发现破解并能直接执行SP,该怎么办?然后他们可以执行任何他们喜欢的任何东西。使用动态SQL,总是验证参数。 或者,您可以写一个CASE语句… SELECT CASE @columnName WHEN 'Col1' THEN Col1 WHEN 'Col2' THEN Col2 ELSE NULL END as selectedColumn FROM yourTable 这是一个更长的时间,但更多的安全。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |