执行任何'选择'的程序命令

时间:2014-11-06 15:46:02

标签: sql-server

我想创建一个可以在数据库中执行任何select的过程,并且具有表名和列名以及where子句作为输入参数

我该如何发展呢?

1 个答案:

答案 0 :(得分:0)

作为一项考试练习,没关系,但由于SQL Injection危险,在真实环境中从不这样做。

CREATE PROCEDURE QueryExecution (
    @columns varchar(200),
    @tableName varchar(50),
    @conditions varchar(200))
AS
BEGIN
    declare @query nvarchar(max);
    set @query = 'SELECT ' + @columns + ' FROM ' + @tableName + ' WHERE ' + @conditions
    exec sp_executesql @query
END

然后这样称呼:

exec QueryExecution 'Id, Description', 'MyTable', 'Id > 5 AND Description LIKE ''%some text%'''

注意:如果您的字符串中需要单引号,则必须通过将它们加倍来对它们进行转义,就像您在LIKE子句中看到的那样。