2014-11-06 40 views
-1

我想创建可以在数据库中执行任何选择,并具有表名和列名和where子句作为输入参数procdure执行任何“选择”命令

我怎么可以开发一个程序?

任何建议是非常感谢

+0

你需要动态sql,但为什么要这样做呢? – Lamak 2014-11-06 15:47:01

+1

看谷歌的SQL注入和为什么这样做是一个坏主意(原因之一) – DavidG 2014-11-06 15:48:25

+0

感谢关注,它只是一个考试问题 – 2014-11-06 15:52:18

回答

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子句中看到逃脱他们。