2014-11-06 56 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子句中看到逃脫他們。