2016-07-20 41 views
1

是否有任何方法將要插入到表中的值捕獲到一個變量中作爲逗號分隔值並使用變量執行insert into語句。例如,創建一個測試表作爲從單個變量SQL存儲過程插入表值

create table id_test (id int, name varchar(10)) 

聲明一個變量,該變量的值設置爲低於示出爲插入到逗號分隔如表中的值:

declare @test as varchar(60) ; 
set @test = '10,''john'''; 

現在使用變量@testinsert into作爲

insert into id_test (id,name) values(@test) 

原因提出這個問題是,我不希望從網頁中所有變量傳遞到存儲流程。相反,我想傳遞從網頁傳遞一個變量,其中包含逗號分隔值插入到表中。

+0

最好的方法是將所有變量的值作爲單獨的參數傳遞。你的方法會導致SQL注入 – Madhivanan

+0

@Madhivanan,有沒有特定的理由這樣做?我想,最好有一個變量,而不是傳遞個別變量,因爲每個表都有更多的列數。 – bhuvana

+2

是的,它導致了sql注入stackoverflow.com/questions/601300/what-is-sql-injection – Madhivanan

回答

1

使用動態查詢,您可以實現此目的。在變量聲明後的存儲過程中

declare @test as varchar(60); 
set @test = '10,''john'''; 

declare @sql AS VARCHAR(MAX) = 'insert into id_test (id, name) values('[email protected]+')' 

--USE EXEC() to execute your insert command 
EXEC(@sql) 
+0

謝謝@JaydipJ!有用!! – bhuvana

+0

面對SQL注入攻擊。 –

相關問題