exec和sp_executesql

來源:互聯網
上載者:User

標籤:ar   sp   art   bs   html   ef   as   tt   size   

sqlserver中的exec和sp_executesql都能執行動態sql語句和預存程序,但exec用法較為簡單,不能帶參數,也沒有返回參數。

sp_executesql則顯得功能更加完善,可以用輸入參數和輸出參數,下面這個例子記錄了sp_executesql的用法。

declare @sql nvarchar(1000),@oazaName varchar(20),@cnt intset @oazaName = ‘abc‘set @sql = ‘select @count=count(*) from dbo.Aza where oazaName like ‘‘%‘‘ +  @oazaName + ‘‘%‘‘‘print @sql-- 注意like查詢時用變數該如何拼接 ‘%‘ + -- 輸出SQL語句:select @count=count(*) from dbo.Aza where oazaName like ‘%‘ +  @oazaName + ‘%‘exec sp_executesql --這裡定義sql文@[email protected], --這裡書寫@sql中用到的變數,多個變數時,將全部定義放到@params變數裡@params =N‘@oazaName as varchar(20),@count as int output‘,--下面的指派陳述式個數由@params定義的變數個數決定,--注意輸出變數的定義和指派陳述式處都要加output關鍵字@oazaName =‘飯‘,@count [email protected] output-- 查看輸出變數的值,感覺@cnt是傳的地址(類似與C#的ref關鍵字)select @cnt

對於帶參數的查詢,可以防止sql注入等攻擊,因此有必要好好掌握sp_executesql的用法。

exec和sp_executesql

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.