動態SQL初探

2021-04-23 17:28:29 字數 1574 閱讀 9302

--1

、普通sql

語句

select customerid,

companyname,contactname,address

,city,phone from dbo.customers

goexec ('select customerid,

companyname,contactname,address

,city,phone from dbo.customers')

goexec sp_executesql n'select customerid,

companyname,contactname,address,city,phone from dbo.customers'-----

注意字串加

n---2

、欄位名,表名為變數時,必須用動態

sql

declare @fname varchar(100)

set @fname='customerid,companyname,contactname,address,city,phone'

declare @strsql varchar(1000)

set @strsql='select '+@fname+' from dbo.customers'

exec(@strsql) -- 成功

--exec sp_executesql @strsql --

此句會報錯

,因為定義

@strsql

資料型別為

varchar,

改為n varchar即可

godeclare @fname varchar(100)

set @fname='customerid,companyname,contactname,address,city,phone'

declare @strsql nvarchar(1000) --

改為nvarchar(1000)

set @strsql = 'select ' + @fname + ' from dbo.customers'

exec(@strsql)

exec sp_executesql @strsql

--3

、以引數形式輸出

declare @strsql nvarchar(1000)

set @strsql='select count(*) from dbo.customers'

exec(@strsql)

go--

將結果放到變數中

,輸出引數

declare @counter int

declare @strsql nvarchar(1000)

set @strsql='select @counter=count(*) from dbo.customers'

exec sp_executesql @strsql,n'@counter int output',@counter output

select counter=@counter

動態規劃初探

最先聽說動態規劃還是在研究生的最優控制課上,課上介紹了用動態規劃解決最優問題。其實動態規劃 dynamic programming dp 和分治方法類似,都是通過組合子問題來求解原問題。不過動態規劃應用於問題重疊的情況,即不同的子問題具有公共的子子問題,每個子問題只求一次,而不必重新計算。就我個人的...

動態規劃初探

為了解決多階段決策問題,我們可以使用窮舉法和動態規劃方法。但是當決策和階段數量達到一定程度後,窮舉法帶來的龐大計算量極大的降低了我們解決該類問題的效率。為了避免窮舉法帶來的龐大計算量,於是我們引入了動態規劃方法去解決該類問題。首先,我們需要了解什麼是多階段決策問題。這不難理解,這裡我舉個簡單的例子來...

SQL注入初探

通過將惡意的sql查詢或新增語句插入到應用的輸入引數中,再在後台sql伺服器上解析執行進行的攻擊 引數值可控 帶入資料庫執行 屬於microsoft公司,access只有乙個庫,若干張表,此資料庫一般用於中小學 可以安裝office套件進行檢視 或通過別的工具 dbview easy acess等 ...