我想创建一个可以在数据库中执行任何select的过程,并且具有表名和列名以及where子句作为输入参数
我该如何发展呢?
答案 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
子句中看到的那样。